檔案和檔案群組的概觀
更新:2007 年 11 月
藉由定義和使用額外的檔案群組,您可以改善資料庫效能,並更佳管理「資料庫物件」(Database Object) 的備份和還原方式。例如,您可以針對不同實體磁碟定義檔案群組以降低存取時間。如果將「結構描述」(Schema) 中的所有資料庫物件與特定檔案群組建立關聯,接著就可以將這些物件一起備份和還原。如需檔案群組的詳細資訊,請參閱實體資料庫檔案和檔案群組 (英文)。
行為
定義資料庫專案的檔案和檔案群組前,您應該考慮下列行為,這樣才能辨別預期行為與未預期問題間的差異。
升級到 Service Release 1
如果在安裝 Service Release 1 (SR1) 前即在 Visual Studio Team System Database 版中定義檔案群組,那麼您是將其定義為結構描述物件。您也將關聯的檔案定義在 storage.sql 檔案中,做為部署後指令碼的一部分。而在安裝 SR1 後,檔案群組和檔案則是以「資料庫專案」(Database Project) 屬性的方式定義的。如果使用 SR1 開啟的資料庫專案包含在 SR1 前建立的檔案或檔案群組,則檔案和檔案群組定義會從結構描述物件轉換為專案屬性。此外,storage.sql 檔案中對應的區段會轉換為註解。然而,這個轉換並不會影響 storage.sql 檔案中的其他陳述式,或是其他指令碼中的檔案群組和檔案的定義。
匯入結構描述
從現有的資料庫匯入結構描述時,也會匯入資料庫的檔案群組和檔案的定義。如果您匯入結構描述的資料庫已經定義其他的檔案群組,則會出現下列這樣的警告:
警告:已產生 ADD FILEGROUP 陳述式,它包括為每個檔案群組各建立一個檔案。您應該檢查檔案的檔名和路徑,確認是否與伺服器上的其他檔案具有一致性。
比較結構描述
藉由比較結構描述,您可以判斷是否有在不同名稱的檔案群組上建立同名物件。您也可以判斷在「來源」(Source) 中是否有加入或移除檔案群組,而「目標」(Target) 上卻沒有。但是,您無法判斷檔案群組是否包含相同的檔案,因為檔案群組永遠會以相同方式顯示。如需如何比較結構描述的詳細資訊,請參閱 HOW TO:比較兩個資料庫的結構描述。
建置和部署資料庫專案
您無法讓檔案和檔案群組專屬於某特定組建組態。但是您可以使用 MSBuild 變數的方式定義檔案,而變數就可以專屬於某個組態。例如,您可以藉由這個方法在「隔離的開發環境」(Isolated Development Environment) 上使用與開發用伺服器 (Staging Server) 上不同的路徑和檔名。
刪除檔案群組、檔案和記錄檔
如果從資料庫專案刪除檔案群組,您可以將該變更部署到新資料庫,但如果部署的是現有的資料庫,就會忽略變更。從資料庫專案刪除檔案群組時,也會刪除與該檔案群組關聯的所有檔案。針對屬於您刪除的檔案群組中的每個資料庫專案物件,都會出現錯誤狀態。若要解決這個錯誤,必須重新建立檔案群組,或者是修改這些物件定義,讓它們與其他檔案群組建立關聯。在這些情況下,直到解決這些錯誤前,您都無法部署資料庫專案。
您不能刪除主要檔案群組。您必須永遠有指定的預設檔案群組。如果移除檔案群組中的唯一檔案,[錯誤清單] 視窗會出現警告,指出檔案群組定義不完整。此外,您也不能移除資料庫專案中唯一的記錄檔。資料庫專案永遠必須定義有至少一個記錄檔。
使用限制
當部署變更到檔案群組、重新命名檔案群組,以及對唯讀檔案群組定義資料庫物件時,您可能會遇到下列限制。
部署變更
在資料庫專案中加入檔案群組時,您可以將該變更部署到新的或現有的資料庫中。如果是刪除檔案群組或者是修改其檔案或屬性,則可以將這些變更部署到新的資料庫中。但是,如果是將專案部署到現有的資料庫,就會忽略檔案群組的刪除和修改。如果資料庫專案中的檔案群組名稱符合目標上的檔案群組名稱,就會假設這兩個檔案群組是相同的。
如果重新命名檔案群組然後再部署到現有資料庫中,就會建立新名稱的檔案群組,而不會變更現有的檔案群組。
重新命名物件定義中的檔案群組
您無法使用重構更新資料庫物件定義中的檔案群組名稱,而必須藉由手動方式或是使用搜尋功能來更新這些名稱。如需詳細資訊,請參閱尋找和取代視窗。
對唯讀檔案群組定義物件
即使選取了檔案群組的 [唯讀] 核取方塊,仍可以在資料庫專案中對該檔案群組定義物件。但如果嘗試將這些變更部署到現有資料庫時,這項作業就會失敗產生錯誤。而將這些變更部署到新的資料庫時,就會跟清除 [唯讀] 核取方塊時一樣建立物件。建立物件後,檔案群組在資料庫上會設定為唯讀。