2012-02-11 67 views
3

我需要將一個網站的asp.net成員資格數據從包含多個站點條目的sql server數據庫轉移到另一個sql server。將一個站點的asp.net成員資格記錄從一個sql server轉移到另一個sql server

我正在尋找一些現有的/已知的方法做到這一點?我嘗試了Web Deploy實用程序,但找不到任何傳輸數據庫記錄的方法。

任何幫助將不勝感激。

謝謝。

+0

你知道如何找到這個網站的具體數據? - 你知道你需要複製什麼,只搜索一種自動方式,或者你什麼都不知道,有什麼可以幫助的? – Aristos 2012-02-11 10:49:45

+0

我正在尋找一種自動化的方式。某些類型的腳本等。 – Puneet 2012-02-13 12:12:56

回答

3

ASP.NET的成員資格數據庫只是一個「普通的」SQL Server數據庫,所以問題實際上是「如何將SQL Server數據庫從一臺服務器轉移到另一臺服務器,只包含其中一部分數據」。

1)由於舊服務器上的數據庫包含多個站點的成員信息,因此您必須知道如何在數據庫中查找「您的」站點(您想要傳輸的站點)的數據。

我在ASP.NET網站上找到了關於this tutorial中ASP.NET成員數據庫模式的信息。
向下滾動到「第3步:查看架構的核心表」。
的關鍵信息是這樣的,尤其是我做了大膽的句子:

aspnet_Applications表是什麼定義這些分區。使用數據庫存儲用戶帳戶信息 的每個 應用程序由此表中的一行表示。aspnet_Applications表 有四列:ApplicationId,ApplicationName, LoweredApplicationNameDescriptionApplicationId是 類型uniqueidentifier並且是表的主鍵; ApplicationName爲每個 應用程序提供了一個獨特的人性化名稱。

其他與會員和角色相關的錶鏈接到aspnet_Applications中的 ApplicationId字段。例如, 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'
    (其中X是你的網站從aspnet_Applications表的ApplicationID

路2 :

  1. 在新服務器上創建一個新的空會員數據庫
  2. 設置舊的SQL Server作爲Linked Server新的SQL Server在
    (這使您可以從舊服務器選擇數據在新服務器上運行SQL)
  3. 複製你的網站從每個表中的數據舊服務器添加到新服務器。只需執行下面的SQL爲每個表:
    insert into aspnet_Users
    select * from [Name_of_old_server].[Name_of_old_database].dbo.aspnet_Users
    where ApplicationID = 'X'

    (其中X是你的網站從aspnet_Applications表的ApplicationID
  4. 現在你可以刪除鏈接的服務器(即您在步驟2中創建)再次 - 這是僅用於一次傳輸數據的目的。
相關問題