共用方式為


使用卸離與附加移動資料庫 (Transact-SQL)

此主題描述如何將卸離的資料庫移動到另一個位置,再重新附加到 SQL Server 2012 中相同或不同的伺服器執行個體。 不過,建議您使用 ALTER DATABASE 計畫的重新放置程序來移動資料庫,而不要使用卸離和附加。 如需詳細資訊,請參閱<移動使用者資料庫>。

安全性注意事項安全性注意事項

建議您不要附加或還原來源不明或來源不受信任的資料庫。 這種資料庫可能包含惡意程式碼,因此可能執行非預期的 Transact-SQL 程式碼,或是修改結構描述或實體資料庫結構而造成錯誤。 使用來源不明或來源不受信任的資料庫之前,請先在非實際執行伺服器的資料庫上執行 DBCC CHECKDB,同時檢查資料庫中的程式碼,例如預存程序或其他使用者定義程式碼。

程序

透過使用卸離和附加來移動資料庫

  1. 卸離資料庫。 如需詳細資訊,請參閱<卸離資料庫>。

  2. 在 Windows 檔案總管或 Windows 的 [命令提示字元] 視窗中,將卸離的資料庫檔案和記錄檔移動到新位置。

    [!附註]

    若要移動單一檔案的資料庫,且檔案小到可以容納在電子郵件中,您可以利用電子郵件來移動。

    即使您想要建立新的記錄檔,也應該一併移動記錄檔。 在某些情況下,重新附加資料庫需要其現有的記錄檔。 因此,一律保留所有卸離的記錄檔,直到資料庫在沒有這些檔案的情形下成功附加為止。

    [!附註]

    如果您嘗試在不指定記錄檔的情形下附加資料庫,附加作業會在其原始位置中尋找記錄檔。 如果原始位置中仍有記錄的副本存在,則會附加該副本。 若要避免使用原始記錄檔,請指定新記錄檔的路徑,或者移除記錄檔的原始副本 (在將記錄檔複製到新位置後)。

  3. 附加複製的檔案。 如需詳細資訊,請參閱<附加資料庫>。

範例

下列範例可為 AdventureWorks2012 資料庫建立名為 MyAdventureWorks 的副本。 Transact-SQL 陳述式會在 [查詢編輯器] 視窗中執行,此視窗連接到附加的伺服器執行個體。

  1. 執行下列 Transact-SQL 陳述式卸離 AdventureWorks2012 資料庫:

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'AdventureWorks2012';
    GO
    
  2. 使用您選擇的方法,將資料庫檔案 (AdventureWorks208R2_Data.mdf 和 AdventureWorks208R2_log) 分別複製到:C:\MySQLServer\AdventureWorks208R2_Data.mdf 和 C:\MySQLServer\AdventureWorks208R2_Log.ldf。

    重要事項重要事項

    針對實際執行的資料庫,將資料庫與交易記錄放在不同的磁碟上。

    若要經由網路將檔案複製到遠端電腦的磁碟,請使用遠端位置的通用命名慣例 (UNC) 名稱。 UNC 名稱使用的格式如下:**\\Servername\Sharename\Path\**Filename。 如同將檔案寫入本機硬碟一樣,您必須將在遠端磁碟讀取或寫入檔案所需的適當權限,授與 SQL Server 執行個體所用的使用者帳戶。

  3. 若要附加已移動的資料庫和記錄檔 (選擇性),請執行下列 Transact-SQL 陳述式:

    USE master;
    GO
    CREATE DATABASE MyAdventureWorks 
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),
        (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')
        FOR ATTACH;
    GO
    

    在 SQL Server Management Studio 中,新附加的資料庫無法立即在 [物件總管] 中可見。 若要檢視資料庫,請在 [物件總管] 中按一下 [檢視],然後按一下 [重新整理]。 在 [物件總管] 中展開 [資料庫] 節點時,剛才附加的資料庫就會出現在資料庫清單中。

請參閱

概念

資料庫卸離與附加 (SQL Server)