将一个站点的asp.net成员资格记录从一个sql server转移到另一个站点

时间:2012-02-11 10:13:59

标签: asp.net sql-server iis asp.net-membership

我需要将一个网站的asp.net成员资格数据从具有多个站点条目的sql server数据库转移到另一个sql server。

我一直在寻找一些现有/已知的方法吗?我尝试了Web Deploy实用程序,但我找不到任何传输数据库记录的方法。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:3)

ASP.NET成员资格数据库只是一个“普通”的SQL Server数据库,因此问题实际上是“如何将SQL Server数据库从一个服务器传输到另一个服务器,只包含其中包含的部分数据”。 / p>

1)由于旧服务器上的数据库包含多个站点的成员资格信息,因此您必须知道如何在数据库中查找“您的”站点(您要传输的站点)的数据。

我在ASP.NET站点的this tutorial中找到了有关ASP.NET成员资格数据库架构的信息 向下滚动到“第3步:查看模式的核心表” 关键信息就是这一点,特别是我大胆的句子:

  

aspnet_Applications表定义了这些分区。每   使用数据库存储用户帐户信息的应用程序   由此表中的一行表示。 aspnet_Applications表   有四列:ApplicationIdApplicationName,   LoweredApplicationNameDescriptionApplicationId是   键入uniqueidentifier并且是表的主键;   ApplicationName为每个人提供了一个独特的人性化名称   应用

     

其他与会员资格和角色相关的表链接回   ApplicationId中的aspnet_Applications字段。例如,   aspnet_Users表,其中包含每个用户帐户的记录,   有一个ApplicationId外键字段; aspnet_Roles的同上   表。这些表中的ApplicationId字段指定了   用户帐户或角色所属的应用程序分区。

简而言之:您必须在aspnet_Applications表中找到要转移的网站,从ApplicationId列中获取ID并查找具有相同ApplicationId的所有行所有其他表格。

2)现在您已了解如何在数据库中查找站点的数据,您可以将数据移动到新服务器。这不是ASP.NET特有的,它只是简单的SQL Server的东西 - 您只需要在新服务器上创建相同的数据库,但只需要与您的站点的数据。

我可以想到两种方法:

方式1:

  1. Backup旧服务器上的整个数据库
  2. Restore新服务器上的此备份
  3. 现在您在新服务器上拥有完整的数据库,但它包含所有网站的数据,而不仅仅是您想要的数据 - >您必须从新服务器上的数据库中删除所有其他站点的数据 最简单的方法是使用SQL - 只需对数据库中的每个表执行此操作:
    delete from aspnet_Users where ApplicationID <> 'X'
    (其中XApplicationID表中您网站的aspnet_Applications
  4. 方式2:

    1. 在新服务器上创建一个新的空成员资格数据库
    2. 在新SQL Server中将旧SQL Server设置为Linked Server (这使您可以在从旧服务器中选择数据的新服务器上运行SQL)
    3. 将站点的数据从旧服务器中的每个表复制到新服务器。只需为每个表执行以下SQL:
      insert into aspnet_Users
      select * from [Name_of_old_server].[Name_of_old_database].dbo.aspnet_Users
      where ApplicationID = 'X'

      (其中XApplicationID表中您网站的aspnet_Applications
    4. 现在您可以再次删除链接服务器(您在步骤2中创建的) - 它仅用于传输数据一次。