我需要将一个网站的asp.net成员资格数据从具有多个站点条目的sql server数据库转移到另一个sql server。
我一直在寻找一些现有/已知的方法吗?我尝试了Web Deploy实用程序,但我找不到任何传输数据库记录的方法。
非常感谢任何帮助。
感谢。
答案 0 :(得分:3)
ASP.NET成员资格数据库只是一个“普通”的SQL Server数据库,因此问题实际上是“如何将SQL Server数据库从一个服务器传输到另一个服务器,只包含其中包含的部分数据”。 / p>
1)由于旧服务器上的数据库包含多个站点的成员资格信息,因此您必须知道如何在数据库中查找“您的”站点(您要传输的站点)的数据。
我在ASP.NET站点的this tutorial中找到了有关ASP.NET成员资格数据库架构的信息 向下滚动到“第3步:查看模式的核心表” 关键信息就是这一点,特别是我大胆的句子:
aspnet_Applications
表定义了这些分区。每 使用数据库存储用户帐户信息的应用程序 由此表中的一行表示。aspnet_Applications
表 有四列:ApplicationId
,ApplicationName
,LoweredApplicationName
和Description
。ApplicationId
是 键入uniqueidentifier
并且是表的主键;ApplicationName
为每个人提供了一个独特的人性化名称 应用其他与会员资格和角色相关的表链接回
ApplicationId
中的aspnet_Applications
字段。例如,aspnet_Users
表,其中包含每个用户帐户的记录, 有一个ApplicationId
外键字段;aspnet_Roles
的同上 表。这些表中的ApplicationId
字段指定了 用户帐户或角色所属的应用程序分区。
简而言之:您必须在aspnet_Applications
表中找到要转移的网站,从ApplicationId
列中获取ID并查找具有相同ApplicationId
的所有行所有其他表格。
2)现在您已了解如何在数据库中查找站点的数据,您可以将数据移动到新服务器。这不是ASP.NET特有的,它只是简单的SQL Server的东西 - 您只需要在新服务器上创建相同的数据库,但只需要与您的站点的数据。
我可以想到两种方法:
方式1:
delete from aspnet_Users where ApplicationID <> 'X'
X
是ApplicationID
表中您网站的aspnet_Applications
方式2:
insert into aspnet_Users
select * from [Name_of_old_server].[Name_of_old_database].dbo.aspnet_Users
where ApplicationID = 'X'
X
是ApplicationID
表中您网站的aspnet_Applications