共用方式為


sp_attach_db (Transact-SQL)

更新: 2006 年 12 月 12 日

將資料庫附加至伺服器。

ms179877.note(zh-tw,SQL.90).gif重要事項:
未來的 Microsoft SQL Server 發行版本將不再提供此功能。請避免在新的開發工作中使用此功能,並計劃修改目前使用此功能的應用程式。 建議您改用 CREATE DATABASE database_name FOR ATTACH。如需詳細資訊,請參閱<CREATE DATABASE (Transact-SQL)>。
ms179877.note(zh-tw,SQL.90).gif附註:
當一或多個記錄檔有新位置時,若要重建多個記錄檔,請使用 CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG。
ms179877.security(zh-tw,SQL.90).gif安全性注意事項:
建議您不要附加或還原來源不明或來源不受信任的資料庫。這種資料庫可能包含惡意程式碼,因此可能執行非預期的 Transact-SQL 程式碼,或是修改結構描述或實體資料庫結構而造成錯誤。使用來源不明或來源不受信任的資料庫之前,請先在非實際伺服器中的資料庫上執行 DBCC CHECKDB,同時檢查資料庫中的程式碼,例如預存程序或其他使用者自訂程式碼。

主題連結圖示Transact-SQL 語法慣例

語法

sp_attach_db [ @dbname= ] 'dbname'
        , [ @filename1= ] 'filename_n' [ ,...16 ] 

引數

  • [ @dbname= ] **'**dbnam '
    這是要附加至伺服器的資料庫名稱。這個名稱必須是唯一的。dbnamesysname,預設值是 NULL。
  • [ @filename1= ] 'filename_n'
    這是資料庫檔案的實體名稱,其中包括路徑。filename_nnvarchar(260),預設值是 NULL。您最多可以指定 16 個檔案名稱。參數名稱開始於 @filename1,可以遞增到 @filename16。檔案名稱清單至少必須包括主要檔案。主要檔案包含指向資料庫中其他檔案的系統資料表。這份清單也必須包括資料庫卸離之後所移動的任何檔案。

    ms179877.note(zh-tw,SQL.90).gif附註:
    這個引數對應到 CREATE DATABASE 陳述式的 FILENAME 參數。如需詳細資訊,請參閱<CREATE DATABASE (Transact-SQL)>。

    在 SQL Server 2005 Database Engine 中,所附加之資料庫中的任何全文檢索檔案,都會隨著資料庫而一起附加。若要指定全文檢索目錄的新路徑,您可以提供一個不含檔案名稱的目錄名稱來指定目錄檔。如需詳細資訊,請參閱<附加與卸離全文檢索目錄>。

    ms179877.note(zh-tw,SQL.90).gif附註:
    您不能將全文檢索目錄附加至根目錄。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

備註

只應對先前利用明確的 sp_detach_db 作業從資料庫伺服器中卸離的資料庫,或對已複製的資料庫執行 sp_attach_db 預存程序。如果您必須指定 16 個以上的檔案,請使用 CREATE DATABASE database_name FOR ATTACH 或 CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG。如需詳細資訊,請參閱<CREATE DATABASE (Transact-SQL)>。

任何未指定的檔案都假設為在前次的已知位置中。若要在不同位置使用檔案,您必須指定新位置。

以較新的 SQL Server 版本建立的資料庫不能附加在較舊的版本中。

ms179877.note(zh-tw,SQL.90).gif附註:
無法卸離或附加資料庫快照集。

當您附加的複寫資料庫是複製而非卸離時,請考慮下列各項:

  • 如果您要將資料庫附加至與原始資料庫相同的伺服器執行個體和版本,則不需要其他步驟。
  • 如果您將資料庫附加至相同伺服器執行個體,但卻是升級的版本,則必須在附加作業完成後,執行 sp_vupgrade_replication 來升級複寫。
  • 如果您將資料庫附加至不同的伺服器執行個體 (不論版本為何),則必須在附加作業完成後,執行 sp_removedbreplication 以移除複寫。

權限

如需有關附加資料庫時如何處理權限的詳細資訊,請參閱<CREATE DATABASE (Transact-SQL)>。

範例

下列範例會將 AdventureWorks 的檔案附加至目前的伺服器。

EXEC sp_attach_db @dbname = N'AdventureWorks', 
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf', 
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf';

請參閱

參考

sp_detach_db (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_removedbreplication (Transact-SQL)
系統預存程序 (Transact-SQL)

其他資源

卸離和附加資料庫
保護資料和記錄檔
附加與卸離全文檢索目錄

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 更新「備註」一節,說明以較新的 SQL Server 版本建立的資料庫不能附加在較舊的版本中。

2005 年 12 月 5 日

新增內容:
  • 新增「安全性注意事項」。