匯出 (0) 列印
全部展開
11 人當中有 6 人評分為有幫助- 為這個主題評分

如何:複製您的資料庫 (Windows Azure SQL Database)

更新日期: 2013年11月

本主題描述如何將 Windows Azure SQL Database 資料庫複製到相同或不同 SQL Database 伺服器上的新資料庫。新資料庫為一般的 SQL Database 資料庫:完全正常運作且獨立於來源資料庫之外。如需詳細資訊,請參閱<在 Windows Azure SQL Database 中複製資料庫>。

您可以複製 SQL Database 資料庫來進行備份。將資料庫複製到另一部伺服器會保護資料庫,以免遭到不必要的修改或刪除。從資料庫備份的角度來看,依重複執行排程複製 SQL Database 中的資料庫類似於完整備份內部部署 SQL Server 資料庫。每一次重複執行時,您可以在複製順利完成之後卸除從前一次重複執行複製的資料庫。如需有關其他備份和還原選項以及業務續航力功能的詳細資訊,請參閱<Windows Azure SQL Database 的業務續航力>。

本主題內容

開始之前

限制

  • SQL Database 子區域可能由多個實體叢集所組成。但是您目前無法在兩個不同的叢集之間複製資料庫。錯誤訊息:如果您嘗試在兩個不同的叢集之間複製資料庫,複製作業會傳回以下錯誤:

    訊息 40532 - 無法開啟登入所要求的伺服器 “<server name>"。登入失敗。

    若要判斷是否可以複製資料庫:針對來源和目的地伺服器使用 ping 命令 ("ping <server>"),以解析其 IP 位址。如果 IP 位址相同,則可以複製資料庫。如需詳細資訊,請參閱使用 Ping 命令

    Workaround procedure: 如果無法複製資料庫,請執行以下作業:

    1. 在相同子區域中建立兩部新的邏輯伺服器 (伺服器應該會接收相同 IP 位址)。

    2. 執行離線資料庫移轉,將資料庫移至其中一部伺服器。您可以使用各種工具,例如匯入/匯出服務。如需詳細資訊,請參閱 SQL Azure 匯入/匯出服務或<如何:使用產生指令碼精靈移轉資料庫 (Windows Azure SQL Database)>。

    現在您可以在這兩部伺服器之間執行資料庫複製。

複製作業的時間

資料庫複製工作負載會影響涉及複製程序之 SQL Database 伺服器的效能。因此,複製程序可能需要很長的時間才能完成。如果資料庫複製失敗,請在來源資料庫的需求量較低時重新啟動複製程序。您可能需要暫停來源資料庫上的其他工作負載,直到複製程序完成為止。

權限

您的登入需要下列權限才能複製 SQL Database 中的資料庫:

  • 在兩部伺服器上:登入在這兩部 SQL Database 伺服器上必須擁有相同的登入名稱和密碼。

  • 在目的地伺服器上:登入必須是伺服器層級 dbmanager 角色的成員。注意:雖然 SQL Database 伺服器的伺服器層級主體不是 dbmanager 角色的成員,但是會自動擁有相同的權限。如需有關管理 SQL Database 中登入的詳細資訊,請參閱<管理 Windows Azure SQL Database 中的資料庫和登入>。

  • 在來源資料庫上:登入必須是來源資料庫的 DBO。只有建立來源資料庫的登入 (也就是 DBO) 才能將該資料庫複製到另一個資料庫中。

如果符合這些權限要求,您的登入就可以針對新資料庫執行 SQL Database ALTER DATABASE 和 DROP DATABASE 陳述式。

note附註
SQL Database 不支援使用 SQL Database ALTER AUTHORIZATION ON DATABASE 陳述式變更資料庫擁有者。就如 SQL Server 一樣,您可以在 SQL Database 的資料庫內建立額外的使用者,並且將這些使用者加入至 db_owner 資料庫層級角色。這些額外的使用者可以連結至登入,但不包括一開始建立資料庫的登入。不過,這些額外的使用者無法執行資料庫複製。

搭配回到頁首連結使用的箭頭圖示 [回到頁首]

複製到相同的伺服器 (Transact-SQL)

若要將您的資料庫複製到相同伺服器上的新資料庫

  • 使用伺服器層級主體登入或是建立您要複製之資料庫的登入,登入 master 資料庫。若登入不是伺服器層級主體,則必須是 dbmanager 角色的成員才能負置資料庫。如需有關登入和連接到伺服器的詳細資訊,請分別參閱<管理 Windows Azure SQL Database 中的資料庫和登入>和<開發:使用說明主題 (Windows Azure SQL Database)>。

  • 請使用 SQL Database CREATE DATABASE 陳述式開始複製來源資料庫。執行此陳述式會起始資料庫複製程序。由於複製資料庫是非同步程序,因此 CREATE DATABASE 陳述式會在資料庫完成複製之前傳回。

  • 藉由查詢 sys.databasessys.dm_database_copies 檢視表來監視複製程序。

    • 正在進行複製時,新資料庫之 sys.databases 檢視表的 state_desc 資料行會設定為 COPYING。

    • 如果複製失敗,新資料庫之 sys.databases 檢視表的 state_desc 資料行會設定為 SUSPECT。在這種情況下,請在新資料庫上執行 DROP 陳述式,並且稍後再試一次。

    • 如果複製成功,新資料庫之 sys.databases 檢視表的 state_desc 資料行會設定為 ONLINE。在這種情況下,複製便已完成,而且新資料庫為一般資料庫,能夠在不影響來源資料庫的情況下加以變更。

  • (選擇性) 如果您決定在複製作業進行中時取消複製,請在新資料庫上執行 DROP DATABASE 陳述式。或者,在來源資料庫上執行 DROP DATABASE 陳述式也會取消複製程序。

範例 (Transact-SQL)

下列程式碼範例會起始資料庫複製程序。此範例會將 Database1A 資料庫複製到位於相同 SQL Database 伺服器上的新資料庫 Database1B

-- Execute on the master database.
-- Start copying.
CREATE DATABASE Database1B AS COPY OF Database1A;

下列程式碼範例可用來監視資料庫複製程序,方法是藉由查詢 sys.databasessys.dm_database_copies 檢視表,以取得名為 Database1B 之新資料庫的相關資訊。

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

Important重要事項
下面的陳述式只會在複製進行期間傳回結果集。複製完成且新資料庫上線之後,查詢就不再傳回結果。

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

搭配回到頁首連結使用的箭頭圖示 [回到頁首]

複製到不同的伺服器 (Transact-SQL)

若要將您的資料庫複製到不同伺服器上的新資料庫

  • 登入目的地伺服器的 master 資料庫,該伺服器為新資料庫建立所在的 SQL Database 伺服器。使用來源 SQL Database 伺服器上與來源資料庫的資料庫擁有者 (DBO) 具有相同名稱和密碼的登入。目的地伺服器上的登入也必須是 dbmanager 角色的成員或是伺服器層級主體登入。如需有關登入和連接到伺服器的詳細資訊,請分別參閱<管理 Windows Azure SQL Database 中的資料庫和登入>和<開發:使用說明主題 (Windows Azure SQL Database)>。

  • 請使用 SQL Database CREATE DATABASE 陳述式開始複製來源資料庫。在目的地伺服器上執行此陳述式會起始資料庫複製程序。由於複製資料庫是非同步程序,因此 CREATE DATABASE 陳述式會在資料庫完成複製之前傳回。

  • 藉由查詢 sys.databasessys.dm_database_copies 檢視表來監視複製程序。

    • 正在進行複製時,新資料庫之 sys.databases 檢視表的 state_desc 資料行會設定為 COPYING。

    • 如果複製失敗,新資料庫之 sys.databases 檢視表的 state_desc 資料行會設定為 SUSPECT。在這種情況下,請在新資料庫上執行 DROP 陳述式,並且稍後再試一次。

    • 如果複製成功,新資料庫之 sys.databases 檢視表的 state_desc 資料行會設定為 ONLINE。在這種情況下,複製便已完成,而且新資料庫為一般資料庫,能夠在不影響來源資料庫的情況下加以變更。

  • (選擇性) 如果您決定在複製作業進行中時取消複製,請在新資料庫上執行 DROP DATABASE 陳述式。或者,在來源資料庫上執行 DROP DATABASE 陳述式也會取消複製程序。

  • (選擇性) 目的地伺服器上的新資料庫上線之後,請使用 ALTER USER 陳述式將新資料庫中的使用者重新對應至目的地伺服器上的登入。新資料庫中的所有使用者都會維持原本在來源資料庫中擁有的權限。起始資料庫複製的使用者會變成新資料庫的資料庫擁有者,並且獲得指派新的安全性識別碼 (SID)。在複製成功之後及重新對應其他使用者之前,只有起始複製的登入 (也就是資料庫擁有者 (DBO)) 能夠登入新的資料庫。

範例 (Transact-SQL)

下列程式碼範例會起始從 Server2 的資料庫複製程序。此範例會示範如何將 Database1A 資料庫從名為 Server1 的 SQL Database 伺服器複製到 Server2 上的新資料庫 Database2A

-- Execute on the master database of Server2
-- Start copying from Server1 to Server2
CREATE DATABASE Database2A AS COPY OF Server1.Database1A;

下列程式碼範例會監視資料庫複製程序。此範例會查詢 Server2 上的 sys.databasessys.dm_database_copies 檢視表,以取得名為 Database2A 之新資料庫的相關資訊。

Important重要事項
下面的陳述式只會在複製進行期間傳回結果集。複製完成且新資料庫上線之後,查詢就不再傳回結果。

-- Execute on the master database.
-- Retrieve state of the new database, Database1B.
SELECT name, state, state_desc FROM sys.databases WHERE name = 'Database1B'

Important重要事項
下面的陳述式只會在複製進行期間傳回結果集。複製完成且新資料庫上線之後,查詢就不再傳回結果。

-- Execute on the master database.
-- Retrieve copying details.
SELECT * FROM sys.dm_database_copies copies
Inner JOIN sys.databases databases ON copies.database_id = databases.database_id
      WHERE databases.name = 'Database1B';

搭配回到頁首連結使用的箭頭圖示 [回到頁首]

停止複製程序 (Transact-SQL)

如果您想要在複製程序完成之前停止複製,可以使用 DROP DATABASE 陳述式卸除目的地資料庫。卸除來源資料庫也會導致複製程序取消。為了讓這些選項順利運作,請使用符合本主題稍早的<權限>中所述之權限要求的登入。

搭配回到頁首連結使用的箭頭圖示 [回到頁首]

後續操作:複製完成之後

  • 當資料庫複製完成時,新資料庫將會進入兩種狀態的其中一種,如下所示:

    • 如果複製程序成功,新資料庫將進入 ONLINE 狀態。當新資料庫上線之後,就可以獨立於來源資料庫之外加以管理和使用。

    • 如果複製程序失敗,新資料庫將進入 SUSPECT 狀態。有問題的資料庫是無法使用的,也無法存取或復原。在此情況下,請卸除目的地資料庫,然後再次嘗試複製來源資料庫。

    若要檢視此狀態,請查詢 sys.databases 檢視表的 state_desc 資料行。

  • 複製完成時,新資料庫與來源資料庫的版本和大小上限都相同。如需有關如何設定和變更 SQL Database 中資料庫之版本或大小上限的詳細資訊,請參閱<Windows Azure SQL Database 中的帳戶和計費>。

  • 當跨伺服器複製程序完成之後,複本的登入、使用者和權限可與來源資料庫分開管理。請使用 DBO 登入和 ALTER USER 陳述式,將新資料庫中的使用者對應至新 SQL Database 伺服器上的登入。例如:ALTER USER userName WITH LOGIN='loginName'。如需詳細資訊,請參閱<ALTER USER (Windows Azure SQL Database)>。

搭配回到頁首連結使用的箭頭圖示 [回到頁首]

另請參閱

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見

社群新增項目

新增
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft. 著作權所有,並保留一切權利。