資料庫的資料和事務紀錄檔可以分離,然後重新附加至相同或其他 SQL Server 實例。 若您希望將資料庫變更為同一台計算機上的不同 SQL Server 的實例或移動資料庫,卸離和附加資料庫是很有用的。
64 位和 32 位環境中的 SQL Server 磁碟上記憶體格式相同。 因此,附加可跨 32 位和 64 位環境運作。 資料庫可以從一個環境中執行的伺服器實例中分離,並附加到另一個環境中執行的伺服器實例。
安全
檔案存取權限會在許多資料庫操作期間設定,包括卸除或附加資料庫。
這很重要
建議您不要附加或還原來源不明或來源不受信任的資料庫。 此類資料庫可能包含惡意程式碼,因此可能執行非預期的 Transact-SQL 程式碼,或是修改結構描述或實體資料庫結構而造成錯誤。 使用來源不明或來源不受信任的資料庫之前,請先在非實際執行伺服器的資料庫上執行 DBCC CHECKDB ,同時檢查資料庫中的程式碼,例如預存程序或其他使用者定義程式碼。
卸離資料庫
卸離資料庫會將其從 SQL Server 實例中移除,但會將資料庫保留在其數據檔和事務歷史記錄檔內。 然後,這些檔案可用來將資料庫附加至任何 SQL Server 實例,包括卸離資料庫的伺服器。
如果下列任一項成立,您就無法中斷連結資料庫:
資料庫會復寫併發佈。 如果複寫,資料庫必須取消發佈。 在您解除它之前,必須先執行 sp_replicationdboption 來停用發佈。
備註
如果您無法使用 sp_replicationdboption,您可以執行 sp_removedbreplication來移除複寫。
資料庫上有資料庫快照集。
您必須先刪除其所有快照,才能分離資料庫。 如需詳細資訊,請參閱刪除資料庫快照 (Transact-SQL)。
備註
資料庫快照無法卸載或掛載。
資料庫正在進行資料庫鏡像會話。
除非會話終止,否則無法卸離資料庫。 如需詳細資訊,請參閱 移除資料庫鏡像 (SQL Server) 。
資料庫是可疑的。 無法分離嫌疑資料庫;在分離之前,您必須先將其進入緊急模式。 如需如何將資料庫放入緊急模式的詳細資訊,請參閱 ALTER DATABASE (Transact-SQL) 。
資料庫是系統資料庫。
備份與還原和卸離
卸載只讀資料庫會遺失差異備份的差異基礎資訊。 如需詳細資訊,請參閱差異備份 (SQL Server)。
回應卸離錯誤
卸離資料庫時產生的錯誤可能會阻止資料庫正常關閉,以及交易紀錄的重新建構。 如果您收到錯誤訊息,請執行下列更正動作:
重新附加與資料庫相關聯的所有檔案,而不只是主要檔案。
解決造成錯誤訊息的問題。
再次分離資料庫。
附加資料庫
您可以附加複製或分離的 SQL Server 資料庫。 當您附加 SQL Server 2014 伺服器執行個體時,目錄檔案會從其先前位置附加,與其他資料庫檔案一起附加,此操作方法與 SQL Server 2005 相同。 如需詳細資訊,請參閱 升級全文檢索搜尋。
當您附加資料庫時,所有數據檔 (MDF 和 NDF 檔案) 都必須可供使用。 如果資料檔案的路徑與資料庫第一次建立或最後一次附加時的路徑不同,您必須指定檔案的目前路徑。
備註
如果附加的主要數據檔是唯讀的,Database Engine 會假設資料庫是唯讀的。
當加密的資料庫第一次附加至 SQL Server 實例時,資料庫擁有者必須執行下列語句來開啟資料庫的主要密鑰:OPEN MASTER KEY DECRYPTION BY PASSWORD = ''password。 建議您執行下列語句來啟用主密鑰的自動解密:ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY。 如需詳細資訊,請參閱 CREATE MASTER KEY (Transact-SQL) 和 ALTER MASTER KEY (Transact-SQL)。
附加記錄檔的需求部分取決於資料庫是讀寫還是只讀,如下所示:
如果是讀寫資料庫,您通常可以在新位置附加記錄檔。 不過,在某些情況下,重新附加資料庫需要其現有的記錄檔。 因此,請務必保留所有分離的日誌檔案,直到資料庫成功附加且不再需要它們為止。
如果讀寫資料庫具有單一記錄檔,而且您未指定記錄檔的新位置,則附加作業會在檔案的舊位置中尋找。 如果找到,則會使用舊的記錄檔,不論資料庫是否已完全關閉。 不過,如果找不到舊的記錄檔,而且資料庫已完全關閉且沒有作用中的記錄鏈結,則附加作業會嘗試為資料庫建置新的記錄檔。
如果附加的主要數據檔是唯讀的,SQL Server 就無法更新儲存在主要檔案中的記錄位置。
附加資料庫的元數據變更
卸離並重新附加只讀資料庫時,會遺失目前差異基底的備份資訊。 差異基底是資料庫中所有資料的最近完整備份,或是資料庫中的檔案或檔案群組的一部分。 如果沒有基準備份資訊,master 資料庫會變成與只讀資料庫不同步,因此之後進行的差異備份可能會提供非預期的結果。 因此,如果您使用差異備份搭配唯讀資料庫,您應該在重新附加資料庫之後進行完整備份來建立新的差異基底。 如需差異備份的相關信息,請參閱差異備份(SQL Server)。
資料庫在附加時會啟動。 一般而言,附加資料庫時會使其恢復到中斷連結或複製時的相同狀態。 不過,附加與卸離作業都會停用資料庫的跨資料庫擁有權鏈結。 如需如何啟用鏈結的資訊,請參閱 跨資料庫擁有權鏈結伺服器組態選項。 此外,每當附加資料庫時,TRUSTWORTHY 會設定為 OFF。 如需如何將 TRUSTWORTHY 設定為 ON 的詳細資訊,請參閱 ALTER DATABASE (Transact-SQL) 。
備份、還原和附加
與完全或部分離線的任何資料庫一樣,無法附加具有還原檔案的資料庫。 如果您停止還原順序,您可以附加資料庫。 然後,您可以重新啟動還原順序。
將資料庫附加至另一個伺服器實例
這很重要
由較新版本 SQL Server 所建立的資料庫無法附加在舊版本中。
當您將資料庫附加至另一個伺服器實例時,若要為使用者和應用程式提供一致的體驗,您可能需要在其他伺服器實例上重新建立資料庫的某些或所有元數據,例如登入和作業。 如需詳細資訊,請參閱在另一個伺服器執行個體 (SQL Server) 上提供可用的資料庫時管理中繼資料。
相關工作
卸離資料庫
附加一個資料庫
通過卸載和附加操作升級資料庫
使用卸離和附加作業來移動資料庫
刪除資料庫快照