Объединение двух баз данных членства ASP.NET - PullRequest
4 голосов
/ 06 апреля 2011

Мне нужно объединить две базы данных членства ASP.NET со связанными таблицами ролей и профилей. Обе базы данных имеют одинаковую роль и структуру профиля. Они используют встроенные провайдеры (SqlMembershipProvider и друзья). Возможны дубликаты.

У вас есть рекомендации для меня? Есть ли инструмент для этого? Если нет: можете ли вы порекомендовать использовать API членства или проще использовать SQL.

Обновление

Вот скрипт, который я наконец использовал для передачи данных о членстве.

insert into targetMembershipDatabase.dbo.aspnet_users
select * from sourceMembershipDatabase.dbo.aspnet_users
where username not in (select username from targetMembershipDatabase.dbo.aspnet_users)

insert into targetMembershipDatabase.dbo.aspnet_membership
select * from sourceMembershipDatabase.dbo.aspnet_membership
where userid in (select userid from targetMembershipDatabase.dbo.aspnet_users)
and not userid in (select userid from targetMembershipDatabase.dbo.aspnet_membership)

insert into targetMembershipDatabase.dbo.aspnet_profile
select * from sourceMembershipDatabase.dbo.aspnet_profile
where userid in (select userid from targetMembershipDatabase.dbo.aspnet_users)
and not userid in (select userid from targetMembershipDatabase.dbo.aspnet_profile)

insert into targetMembershipDatabase.dbo.aspnet_usersinroles
select * from sourceMembershipDatabase.dbo.aspnet_usersinroles
where userid in (select userid from targetMembershipDatabase.dbo.aspnet_users)
and not userid in (select userid from targetMembershipDatabase.dbo.aspnet_usersinroles)

Предоставляется как есть. Не проверять дубликаты писем. Нет гарантии, что это работает в более сложном сценарии.

Ответы [ 2 ]

2 голосов
/ 06 апреля 2011

Я не знаю ни одного инструмента, который бы делал это, но схема довольно проста, так что было бы достаточно простой работы, чтобы просто сделать это в SQL.В любом случае все ключи имеют GUID, поэтому проблем не должно быть.

Очевидно, что вам нужно проверить поле user_name на наличие дубликатов и адресов электронной почты, если применяется правило уникального адреса электронной почты.Но если роли в обеих базах одинаковы, то все, что вас действительно интересует, - это пользователи.После того, как вы справитесь с этим, вам нужно будет обновить RoleId и ApplicationId в aspnet_Users и aspnet_UsersInRoles.

0 голосов
/ 06 апреля 2011

В настоящее время я использую одну базу данных для трех разных приложений. У каждого из них есть свой ApplicationID, и ничего особенного для меня не произошло в течение этих двух лет. даже похожие письма доступны (потому что sql проверяет ApplicationID, и в каждом приложении только у вас есть одно письмо), поэтому я не думаю, что вы должны рассмотреть что-то особенное

Просто создайте сценарий из данных и запустите его в базе данных mainDatabase, но не заменяйте схему таблиц.

...