建立和修改資料庫與伺服器物件
「資料庫物件」(Database Object) 會定義資料庫內容的結構。 這些物件包含在「資料庫專案」(Database Project) 中,而專案中也可能包含「資料產生計劃」(Data Generation Plan) 和指令碼。 伺服器物件會定義存在資料庫伺服器上但不在資料庫中的物件,例如登入、憑證或自訂錯誤訊息。 伺服器物件包含在伺服器專案中。
在 [方案總管] 中,資料庫和伺服器物件的定義包含在檔案中,並且在資料庫或伺服器專案中依照型別分組。 當您使用資料庫和伺服器物件時,可能會發現使用 [結構描述檢視] 更為直覺,因為它會依照型別分組物件。 如果資料庫專案中的檔案將 Build Type 標示為 [組建],系統就會加以剖析,以便找出資料庫物件定義。 包含在資料庫專案中但具有不同 Build Type 的檔案不會被視為包含資料庫物件,而且不會出現在 [結構描述檢視] 中。
一般工作
下表列出支援此案例之一般工作的說明,以及詳細資訊的連結,這些資訊可幫助您成功完成這些工作。
工作 |
支援內容 |
---|---|
獲得實務練習:您可以執行入門逐步解說,熟悉如何建立資料庫專案及其物件,以及如何修改這些物件。 |
|
進一步了解資料庫和伺服器物件:在本主題後面的內容中,您可以進一步了解資料庫和伺服器物件,包括如何解析名稱、如何在物件定義中參考資料庫名稱,以及如何驗證物件。 |
|
了解資料庫物件之間的相依性:您可以檢視資料庫物件所依存的物件,以及相依於該物件的物件。 |
|
將物件加入至資料庫或伺服器專案:您可以使用下列任何一種方法,將物件加入至資料庫或伺服器專案:
|
|
將特製化物件加入至資料庫或伺服器專案:若要將某些物件型別加入至專案,您必須遵循該物件型別特有而且稍微不同的程序。
|
|
修改資料庫或伺服器物件:您可以在伺服器或資料庫專案中修改物件的定義。 您也可以修改這些物件的物件層級 SET 選項。 |
|
從資料庫或伺服器專案中移除物件:您可以從資料庫或伺服器專案中刪除物件,以便永久移除它們。 您也可以暫時排除仍在開發中的物件。 |
|
自訂資料庫和伺服器物件的範本:您可以檢視和修改建立資料庫與伺服器物件時所使用的範本。 |
|
疑難排解問題:您可以進一步了解如何疑難排解資料庫和伺服器專案的常見問題。 |
物件定義
資料庫和伺服器物件會定義在 .sql 檔案的集合中,而這些檔案會儲存在專案資料夾中。 大多數物件都會以個別檔案定義。 不過,資料表中的資料行以及預存程序或函式的參數則是例外。 資料行是在包含資料表定義的檔案中指定,而參數是在包含預存程序或函式的檔案中指定。
.sql 檔案的 [建置動作] 屬性會指出是否要剖析檔案,以便確認它是否包含資料庫物件的定義。 根據預設,包含資料庫物件定義的檔案會設定為 [組建],而其他 .sql 指令碼和其他檔案則會設定為 [不在組建中]。 [建置動作] 屬性也會決定建置指令碼是否包含此檔案。
每個物件的名稱都會決定其檔名,而物件的型別則會決定其預設的副檔名。 例如,函式位於名為 ObjectName.function.sql 的檔案中,而預存程序則為於名為 ObjectName.proc.sql 的檔案中。
方案總管和結構描述檢視中的物件
在 [方案總管] 中,您可以使用專案所包含的檔案以及包含物件定義的檔案。 您無法在 [方案總管] 中使用重新命名重構。 當您想要使用檔案 (例如將專案簽入版本控制) 時,請使用 [方案總管]。
在 [結構描述檢視] 中,您可以使用資料庫物件。 當您要使用物件而非包含其定義的檔案時,請使用 [結構描述檢視]。 例如,您可以使用 [結構描述檢視] 來建立資料庫物件。
物件名稱解析
一般來說,您應該使用 SQL Server 所用的相同規則來解析物件名稱。 某些 sysobjects 可能需要完整限定,才能正確解析。 如果在牽涉到非完整限定之物件名稱的情況下發生錯誤,或者您注意到有非預期的行為,則應該完整限定該物件名稱,以嘗試解決問題。
參考物件定義中的資料庫名稱
您可以在資料庫專案的物件定義指令碼中使用 $(databasename) 語彙基元,但有下列限制:
您必須用方括弧括住語彙基元,如下列範例所示:
[$(databasename)]
您不得使用語彙基元來指定三個部分的名稱,如下列範例所示:
[$(databasename)].[dbo].[Table1]
下列範例示範如何在預存程序中使用 $(database) 名稱語彙基元:
CREATE PROCEDURE [dbo].[MyProcedure]
@param1 INT = 0,
@param2 INT
AS
ALTER DATABASE [$(databasename)]
MODIFY FILEGROUP [FileGroup1] DEFAULT
RETURN 0
物件層級的 SET 選項
除了可以針對資料庫專案設定 SET 選項以外,您也可以在個別的資料庫物件上指定兩個選項的值。 這兩個選項為 ANSI NULLS 和引號識別項 (Quoted Identifier)。 根據預設,每個物件的 SET 選項會與資料庫專案的 SET 選項相符。 您可以將這兩個選項設定為 Project default、On 或 Off。 建置資料庫專案時,只有設定值與專案預設值不同的物件層級 SET 選項會在建置指令碼中產生指令碼。
注意事項 |
---|
當您使用 [匯入指令碼] 或 [匯入資料庫結構描述] 命令時,將不會匯入個別資料庫物件的 SET選項值。 您必須在 [屬性] 視窗中進行設定。 如需詳細資訊,請參閱 HOW TO:指定物件層級的 SET 選項。 |
物件驗證
當您將變更儲存至所建立或修改的資料庫物件時,即會執行驗證。 若物件定義發生任何錯誤,將顯示在 [錯誤清單] 視窗中。 如果按兩下錯誤訊息,會開啟物件定義讓您修正錯誤。 如果資料庫物件包含錯誤,[結構描述檢視] 中的代表圖示會顯示紅色的驚嘆號。
注意事項 |
---|
如果您所使用的版本不支援資料庫物件,代表該物件的圖示會顯示黃色的倒三角形。 |
如需如何疑難排解資料庫物件相關問題的詳細資訊,請參閱疑難排解資料庫專案、建置和部署的問題。
相關案例
建立和修改資料庫指令碼
您可以指定預先部署和部署後指令碼,以便在部署資料庫前後執行動作。 例如,您可能會使用部署後指令碼,將參考資料加入至查閱資料表。重構資料庫程式碼和資料
您可以使用資料庫重構來消除某些重複和容易發生錯誤的工作,例如重新命名物件的所有參考、完整限定名稱、擴充萬用字元,或是將物件移到不同的結構描述。建置和部署資料庫到隔離的開發環境
在您修改專案中的物件之後,建置變更並且部署到「隔離的開發環境」(Isolated Development Environment)。分析資料庫程式碼以改善程式碼品質
您可以分析資料庫程式碼,以找出和修正常見的設計、命名和效能問題。使用 Transact-SQL 編輯器編輯資料庫指令碼和物件 (Microsoft 網站)
您可以使用 Transact-SQL 編輯器來修改指令碼和資料庫物件定義。