共用方式為


資料庫專案概觀

更新:2007 年 11 月

「資料庫專案」(Database Project)是資料庫「結構描述」(Schema) 的離線表示 (Offline Representation)。此表示包含物件定義和部署指令碼,可用來建立該資料庫的新執行個體或更新現有執行個體。藉由建立資料庫專案,資料庫便能受到版本控制。

您可以使用資料庫專案執行下列工作:

  • 建立和部署資料庫。

  • 讓資料庫受版本控制。

  • 從現有已部署的資料庫匯入物件來建立資料庫專案。

  • 將資料庫專案與已部署的資料庫比較。

  • 匯入已部署的資料庫所做的變更,讓資料庫專案能再次與已部署的資料庫一致。

  • 新增、修改和刪除「資料庫物件」(Database Object) 與指令碼。

  • 建立一或多個「資料產生計劃」(Data Generation Plans),將測試資料填入資料庫。

匯入資料庫結構描述

您可以從資料庫執行個體或從指令碼匯入資料庫結構描述。當匯入資料庫結構描述時,將進行驗證。無法了解的陳述式會被放入 ScriptsIgnoredOnImport.sql 檔案。如果匯入的物件定義參考了已不存在的物件,您必須在建置及部署資料庫專案之前,解決那些錯誤。您可以透過刪除物件來解決錯誤。例如,如果匯入的預存程序參考了已不存在的資料表,將該預存程序移除即可。

當您匯入大型的資料庫結構描述時,初始的清除處理可能需要耗費許多時間。然而,在您排除錯誤之後,Visual Studio Team System Database 版將確認不會產生新的錯誤。當您儲存已修改的物件定義時,會驗證所有的變更。

資料庫專案結構

資料庫專案由 .dbproj 檔案組成,其中包含三個預設子資料夾:[資料產生計劃]、[結構描述物件] 和 [指令碼]。本主題稍後會詳細說明每個子資料夾。[方案總管] 提供資料庫專案的檔案架構檢視。[方案總管] 中的每個項目都與磁碟上的檔案或資料夾對應。相反地,[結構描述檢視] 則提供物件架構檢視,可讓您辨識資料庫中的物件,無論這些物件是否以個別檔案的形式存在。

在 [方案總管] 中,您可以對整個專案或個別檔案執行動作。您可以對 [方案總管] 中的資料庫專案執行下列動作:

  • 匯入資料庫結構描述
    您可以從指定的現有資料庫匯入結構描述資訊。

  • 匯入指令碼
    您可以從包含物件定義的指令碼匯入一或多個物件的結構描述資訊。

  • 建置
    您可以產生建置指令碼,來建立有相同結構描述的資料庫,或將現有資料庫與該結構描述同步。資料庫專案的屬性會控制部署以及目標資料庫上的設定。

  • 重建
    您可以使用這個選項建置專案,即使專案在上次建置之後尚未變更,也可以建置。

  • 部署
    根據選取的組態,您可以將資料庫專案部署至新的或現有的資料庫。如果資料庫專案不是最新的,這個動作會先建置專案再部署。

  • 清除
    您可以刪除建置、重新建置或部署作業所產生的任何現有建置指令碼。

  • 加入
    您可以將資料夾和專案項目檔案加入至資料庫專案。例如,您可以加入包含資料庫物件定義的專案項目。

  • 設定為啟始專案
    您可以指定資料庫專案標記為方案的啟始專案。不過,如果方案中有其他專案,最好能選擇其他專案做為啟始專案,因為資料庫專案並不包含使用者介面項目。

  • 將方案加入至原始檔控制
    您可以讓包含資料庫專案的方案受到版本控制。

  • 剪下
    您可以將專案複製到剪貼簿。這個動作也會標記專案,當您將專案貼到其他地方時,就會從方案中的目前位置移除。

  • 移除
    您可以從目前方案移除資料庫專案。

  • 重新命名
    您可以重新命名資料庫專案。如果專案目前受版本控制,就必須先簽出才能完成這個動作。

  • 卸載專案
    您可以卸載資料庫專案。例如,假設現在要開啟包含多個專案的大型方案,但只想要載入目前處理的專案,就可以卸載專案。卸載資料庫專案之後,可以使用 [重新載入專案] 命令重新載入專案。

  • 顯示所有檔案
    您可以切換這個設定,顯示或隱藏已從資料庫專案排除的檔案。

  • 屬性
    您可以檢視和自訂專案屬性,以控制建置和部署資料庫專案的各部分。

  • 重新整理
    您可以重新整理 [方案總管] 中顯示的資料庫物件。這會重新解譯包含物件定義之檔案的內容。

資料產生計劃

根據預設,這個子資料夾會包含您所建立的任何計劃,以針對已部署的資料庫產生代表測試資料。

您可以對 [資料產生計劃] 子資料夾執行下列動作:

  • 加入新項目
    您可以建立專案項目,例如資料產生計劃,然後加入專案中。

  • 加入現有項目
    您可以將已存在的項目加入至資料庫專案。專案資料夾或其子資料夾會建立該項目的複本。

  • 複製
    您可以將專案的所有資料產生計劃複製到剪貼簿。

結構描述物件

根據預設,這個子資料夾會包含內有資料庫專案物件定義的所有檔案,並依物件類型分組。

您可以對 [結構描述物件] 子資料夾執行下列動作:

  • 加入新項目
    您可以建立專案項目,例如資料表定義,然後加入專案中。

  • 加入現有項目
    您可以將已存在的項目加入至資料庫專案。專案資料夾或其子資料夾會建立該項目的複本。

  • 複製
    您可以將專案中的所有結構描述複製到剪貼簿。

資料庫結構描述物件會以 .sql 檔案的集合定義,並儲存在專案資料夾中。大多數物件都會以個別檔案定義。例外的是資料表中的資料行 (這會在包含資料表定義的檔案中指定),以及預存程序或函式的參數 (這會在包含預存程序或函式的檔案中指定)。

.sql 檔案的 [建置動作] 屬性指示是否進行剖析,以查看是否包含資料庫物件的定義。根據預設,包含資料庫物件定義的檔案會設為 [建置],而其他 .sql 指令碼和其他檔案則會設為 [不在組建中]。[建置動作] 屬性也會判斷檔案是否包含在組建指令碼中。

物件的名稱會決定其檔名,而物件的類型則會決定預設的副檔名,如下所示:

資料庫物件類型

名稱

函式

ObjectName.function.sql

索引

ObjectName.index.sql

預存程序

ObjectName.proc.sql

資料表

ObjectName.table.sql

觸發程序

ObjectName.trigger.sql

檢視

ObjectName.view.sql

主索引鍵條件約束

ObjectName.pkey.sql

外部索引鍵條件約束

ObjectName.fkey.sql

唯一索引鍵條件約束

ObjectName.ukey.sql

檢查條件約束

ObjectName.chkconst.sql

預設條件約束

ObjectName.defconst.sql

統計值

ObjectName.statistic.sql

如果您在 .sql 檔案中定義物件,但物件類型與檔名指出的物件類型不符,[錯誤清單] 視窗會顯示錯誤。例如,假設將名為 MyTable.table.sql 的檔案加入資料庫專案,但卻在該檔案中定義檢視,[錯誤清單] 視窗中就會出現錯誤訊息。

您可以對 [結構描述物件] 子資料夾中的檔案執行下列動作:

  • 開啟
    根據檔案類型,在適當的編輯器中開啟檔案。例如,Transact-SQL (T-SQL) 編輯器會開啟 .sql 檔案。

  • 開啟方式
    在您指定的其他編輯器中開啟包含物件定義的檔案。

  • 檢視程式碼
    在 T-SQL 編輯器中開啟檔案。

  • 從專案移除
    將檔案標記為從專案排除。當您下次建置或部署資料庫專案時,排除的檔案就不會包含在產生的建置指令碼中。如果檔案仍在處理中,但您想部署資料庫的其他部分時,便可排除檔案。

  • 剪下
    將選取的一或多個檔案複製到剪貼簿,然後從資料庫專案刪除這些檔案。

  • 在結構描述檢視中檢視物件
    開啟 [結構描述檢視] (若尚未顯示),並反白顯示定義包含在您所點選檔案中的資料庫物件。只有包含有效物件定義的 .sql 檔案才能使用這個選項。

  • 複製
    將選取的一或多個檔案複製到剪貼簿。

  • 重新命名
    重新命名檔案。這不會對檔案內容執行重新命名重構,就只是簡單重新命名檔案而已。

  • 刪除
    將選取的一或多個檔案從資料庫專案刪除,並從磁碟移除這些檔案。系統會提示您確認刪除,因為這會永久刪除檔案。

  • 屬性
    顯示所點選檔案的屬性視窗。

指令碼

根據預設,這個子資料夾會包含資料庫的管理指令碼、預先部署指令碼和部署後指令碼。管理指令碼的 [建置動作] 屬性會設為 [不在組建中],部署指令碼則會設為 [PreDeploy] 或 [PostDeploy]。資料庫專案只能有一個預先部署指令碼和一個部署後指令碼。預先部署和部署後指令碼通常會包含其他指令碼。這些其他指令碼也可能是資料庫專案的一部分,而且將 [建置動作] 屬性設為 [不在組建中]。

您可以對 [指令碼] 子資料夾執行下列動作:

  • 加入新項目
    您可以建立專案項目,例如管理指令碼,然後加入專案中。

  • 加入現有項目
    您可以將已存在的項目加入至資料庫專案。專案資料夾或其子資料夾會建立該項目的複本。

  • 複製
    您可以將專案中的所有指令碼複製到剪貼簿。

結構描述檢視

[結構描述檢視] 會以另一種方式顯示資料庫專案,以專案中包含的資料庫物件為主。資料產生計劃或指令碼在 [結構描述檢視] 中不會有對應的項目,因為這些類型的項目並未包含資料庫物件的定義。

您可以對 [結構描述檢視] 中的專案節點執行下列動作:

  • 匯入資料庫結構描述
    您可以從指定的現有資料庫匯入結構描述資訊。

  • 匯入指令碼
    您可以從包含物件定義的指令碼匯入一或多個物件的結構描述資訊。

  • 比較結構描述
    您可以將資料庫專案的結構描述資訊,與已部署之資料庫的結構描述資訊比較。

  • 加入
    您可以將資料庫物件加入至資料庫專案,包括資料表、檢視、預存程序、內嵌函式、資料表函式、純量函式、使用者定義資料型別、檔案群組、資料庫應用程式角色、資料庫角色和資料庫使用者。

  • 屬性
    您可以檢視資料庫屬性。

注意事項:

對稱金鑰、非對稱金鑰和憑證不能當做物件加入資料庫專案。您必須在預先部署指令碼中建立這些物件。如果從包含這些物件的資料庫匯入結構描述,預先部署指令碼會包含標示金鑰和憑證的預留位置註解。您必須修改預先部署指令碼來建立這些物件。

  • 重新整理
    您可以重新整理 [結構描述檢視] 中顯示的資料庫物件。這會重新解譯包含物件定義之檔案的內容。

  • 方案總管
    您可以將焦點從 [方案總管] 切換至 [結構描述檢視]。

  • 篩選結構描述檢視
    您可以依 [物件型別] 或 [結構描述] 切換物件的顯示畫面。您必須選取專案節點或資料庫專案內的項目,才能切換分組方式。

結構描述物件

[結構描述檢視] 會包含節點來代表 [方案總管] 中的每個資料庫專案。每個資料庫專案節點都包含資料庫專案物件的所有定義,並依物件類型或結構描述分組。

您可以對 [結構描述檢視] 中顯示的資料庫物件執行下列動作:

  • 匯入指令碼
    您可以從包含物件定義的指令碼匯入一或多個物件的結構描述資訊。

  • 開啟
    您可以在 T-SQL 編輯器中開啟物件定義。如果變更檔案,[結構描述檢視] 會隨之更新。例如,假設將資料行加入資料表定義,這些資料行就會出現在 [結構描述檢視] 中。

  • 開啟方式
    您可以在指定的其他編輯器中開啟包含物件定義的檔案。

  • 加入
    您可以將資料庫物件加入至資料庫專案,包括資料表、檢視、預存程序、內嵌函式、資料表函式、純量函式、使用者定義資料型別、檔案群組、資料庫應用程式角色、資料庫角色和資料庫使用者。此外,您也可以在資料庫專案中加入資料夾,以組織物件。

  • 重新命名 ([重構] 子功能表上)
    您可以重新命名資料庫物件。如果物件目前受版本控制,就必須先簽出包含物件定義的檔案才能完成這個動作。這個動作會叫用重構作業,並能更新資料庫專案中對重新命名物件的所有參考,以及任何相關聯的資料庫單元測試專案。

  • 在方案總管中檢視檔案
    您可以使用這個選項,在 [方案總管] 中尋找包含所點選資料庫物件之定義的檔案。

  • 屬性
    您可以檢視物件屬性。在 [結構描述檢視] 中,物件的屬性幾乎都是唯讀的。若要變更屬性,您必須編輯物件定義。

修改預設專案結構

本主題所描述的結構是 [方案總管] 中的預設專案結構,但您可以重新安排專案的內容。您可以建立其他資料夾、重新命名現有的資料夾,並以拖放或剪貼方式在專案內移動檔案。資料庫物件定義是透過設定為 [建置] 的 [建置動作] 屬性進行識別,而不是透過它們在專案中的位置。部署指令碼也是透過設定為 [PreDeploy] 或 [PostDeploy] 的 [建置動作] 屬性進行識別。專案中其他檔案的 [建置動作] 屬性設定為 [不在組建中]。

[結構描述檢視] 只能依 [物件型別] 或 [結構描述] 切換顯示專案的內容。

請參閱

概念

使用資料庫物件概觀

Database Edition 的用語概觀

其他資源

小組環境中的資料庫建立和部署概觀

建置和部署資料庫結構描述

使用資料庫指令碼

在小組環境中使用資料庫專案

逐步解說 (建立及更新版本控制的資料庫結構描述)