合并两个ASP.NET成员资格数据库

时间:2011-04-06 07:45:57

标签: asp.net sql membership

我必须将两个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 个答案:

答案 0 :(得分:2)

我不知道有任何工具可以做到这一点,但架构非常简单,因此在SQL中执行它是一项非常简单的工作。无论如何所有的键都是GUID,所以不应该有问题。

如果应用了唯一的电子邮件地址规则,显然您需要检查user_name字段中的重复项和电子邮件地址。但如果两个数据库中的角色相同,那么您真正感兴趣的就是用户。一旦你完成了它,只需要更新RoleIdApplicationId中的aspnet_Usersaspnet_UsersInRoles

答案 1 :(得分:0)

我目前在三个不同的应用程序中使用单个数据库。他们每个人都有自己的ApplicationID,这两年没有什么特别的事情发生在我身上。甚至类似的邮件都可用(因为sql检查ApplicationID并且在每个应用程序中只有一封邮件)所以我认为你不必考虑特别的东西

只需从数据创建一个脚本并在mainDatabase中运行,而不是不替换表的模式。

相关问题