2011-04-06 55 views
4

我必須將兩個ASP.NET成員資格數據庫與相關角色和配置文件表合併。兩個數據庫都有相同的角色和配置文件結構。他們使用內置的提供者(SqlMembershipProvider和朋友)。重複是可能的。合併兩個ASP.NET成員資格數據庫

你有什麼建議嗎?有沒有一種工具可以做到這一點?如果不是的話:你能推薦使用會員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

我沒有意識到會有這樣做的任何工具,但是這個模式非常簡單,所以在SQL中完成這個工作將是一件簡單的工作。無論如何,所有的密鑰都是GUID,所以不應該有問題。

顯然,如果應用了唯一的電子郵件地址規則,您需要檢查user_name字段的重複項和電子郵件地址。但是,如果兩個數據庫中的角色相同,那麼您真正感興趣的是用戶。一旦你完成了它,只需要更新aspnet_Usersaspnet_UsersInRoles中的RoleIdApplicationId

+0

就像你說的那樣簡單。不需要超出簡單T-SQL腳本的工具:-) – 2011-04-07 09:44:55

+0

@Dirk你能提供這樣的T-SQL腳本嗎? – 2013-02-01 09:24:00

+0

@Akil Vhora:添加腳本作爲我的問題的更新。 – 2013-02-01 11:07:17

0

我目前使用三個不同的應用程序的單個數據庫。他們每個人都有自己的ApplicationID,對我來說這兩年沒有什麼特別的事情發生。即使有類似的郵件可用(因爲sql檢查ApplicationID,並在每個應用程序只有你有一封郵件),所以我不認爲你必須考慮一些特殊的東西

只是從數據創建一個腳本,並運行在你的mainDatabase只是這並不代替表格的模式。

相關問題