在 AdventureWorks2008 範例資料庫內包含了 FILESTREAM 資料類型。
若使用 SSMS 管理工具,直接採取卸離(Detach),再附加(attach) 資料庫的作法,可能在執行附加(attach)作業時,遇到以下的錯誤訊息:
訊息 5120,層級 16,狀態 105,行 1 無法開啟實體檔案 "C:\SQLDB\AdventureWorks2008_2.Documents"。作業系統錯誤 2: "2(系統找不到指定的檔案。)"。 訊息 5105,層級 16,狀態 14,行 1 發生檔案啟動錯誤。實體檔案名稱 'C:\SQLDB\AdventureWorks2008_2.Documents' 可能不正確。請診斷並校正其他錯誤,然後重試一次作業。 訊息 1813,層級 16,狀態 2,行 1 無法開啟新資料庫 'AdventureWorks2008'。CREATE DATABASE 已經中止。
這可能是因為,目前 SSMS 管理工具尚未提供附加包含 FILESTREAM 的資料庫的功能,但您可以利用以下的範例碼來執行附加(attach)作業:
/* 1. 在 FILEGROUP [DocumentFileStreamGroup] CONTAINS FILESTREAM DEFAULT 這句話的意思是指: 設定用來存放 FILESTREAM 的預設檔案群組:[DocumentFileStreamGroup] 2. ( NAME = N'FileStreamDocuments', FILENAME = N'C:\SQLDB\AdventureWorks2008_2.Documents' ), 這句話是指: NAME :是設定包含 FILESTREAM 的邏輯檔案名稱。 FILENAME :設定包含 FILESTREAM 的實體資料夾之路徑。 -- CONTAINS FILESTREAM 指定檔案群組會將 FILESTREAM 二進位大型物件 (BLOB) 儲存在檔案系統中。 DEFAULT 指定具名的檔案群組必須是資料庫中的預設檔案群組。 -- 在本範例中,是將資料庫的實體檔案存放在:C:\SQLDB 資料夾。 包含 FILESTREAM 的實體資料夾之路徑,則是為於:C:\SQLDB\AdventureWorks2008_2.Documents 資料夾。 */ USE [master] GO CREATE DATABASE [AdventureWorks2008] ON ( FILENAME = N'C:\SQLDB\AdventureWorks2008.mdf' ), FILEGROUP [DocumentFileStreamGroup] CONTAINS FILESTREAM DEFAULT ( NAME = N'FileStreamDocuments', FILENAME = N'C:\SQLDB\AdventureWorks2008_2.Documents' ), ( FILENAME = N'C:\SQLDB\AdventureWorks2008_1.ldf' ) FOR ATTACH GO
參考資料:
啟用 Enable FILESTREAM ,下載安裝 AdventureWorks2008 範例資料庫(Installing Sample Databases)
http://sharedderrick.blogspot.com/2009/06/enable-filestream-adventureworks2008.html
SQL Server 2008 線上叢書 (2009 年 7 月) CREATE DATABASE (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms176061.aspx