資料庫專案設定概觀
您可以使用「資料庫專案」(Database Project) 設定控制資料庫的各個部分與組建組態。 這些設定可分類如下:
專案設定
建置事件
參考
組建
部署
專案設定、建置事件和部署屬性儲存在資料庫專案中,可透過版本控制共用。
注意事項 |
---|
使用者專屬的設定會儲存在 .dbproj.user 檔案中。 專案專屬的設定會儲存在 .dbproj 檔案中。 |
專案設定
下列表格中的設定會套用至這個資料庫專案的所有組態。
欄位 |
預設值 |
說明 |
---|---|---|
專案版本 |
當您建立資料庫專案時所指定的 SQL Server 版本。 |
指定這個資料庫專案所設定的目標 SQL Server 版本。 |
資料庫模型的定序 |
英文 (美國) (1033) - CI |
指定預設規則,以根據這些預設規則在儲存資料庫模型的基礎 SQL Server Compact Edition 資料庫中儲存和比較資料。 您應該針對此設定,指定盡可能接近您的目標資料庫定序的值。 您可以區分大小寫。 例如,您可以對模型使用不區分大小寫的定序,而對資料庫使用區分大小寫的定序。 您可以覆寫物件定義中的預設定序。
注意事項
所有平台的預設定序都相同。預設值不會變更為要符合目前的地區設定。您必須手動將預設定序設定為您的地區設定所適合的定序。
|
預設結構描述 |
dbo |
指定用於建立物件的預設結構描述。 當您變更一個或多個物件定義時,可以覆寫這個設定。 |
將結構描述名稱併入檔案名稱 |
是 |
指定檔案名稱是否包含結構描述做為前置詞。例如,dbo.Products.table.sql。 如果清除了這個核取方塊,則物件的檔名格式為 ObjectName.ObjectType.sql |
目錄屬性檔 |
Properties\CatalogProperties.catalogproperties |
包含目標資料庫的詳細屬性設定。 所有屬性都符合 SQL Server 資料庫的屬性。 如需詳細資訊,請參閱 Microsoft 網站上的這個主題:資料庫屬性 (選項頁面)。 |
建置事件設定
您可以使用這些設定,指定建置作業開始之前和完成之後執行的命令列。
欄位 |
預設值 |
說明 |
---|---|---|
建置前事件命令列 |
無 |
指定在建置專案前執行的命令列。 請按一下 [建置前進行編輯] 修改命令列。 |
建置後事件命令列 |
無 |
指定在建置專案後執行的命令列。 請按一下 [建置後進行編輯] 修改命令列。 |
執行建置後事件 |
建置成功時 |
指定建置後命令列應永遠執行、只有在建置成功時執行,或只有在建置更新專案輸出 (建置指令碼) 時執行。 |
如需詳細資訊,請參閱HOW TO:指定建置前或建置後執行的自訂動作和建置前事件/建置後事件命令列對話方塊 (資料庫專案)。
參考
您可以使用這個頁面定義與跨資料庫參考相關的伺服器和資料庫變數。 此外,您也可以指定這些變數的值。 如需詳細資訊,請參閱在資料庫專案中使用參考。
建置設定
您可以使用這些設定影響建置指令碼和目標資料庫。 這些設定只會影響您所指定的組態和平台,而且通常會因使用者而有所不同。
欄位 |
預設值 |
說明 |
建置輸出路徑 |
. \sql\ |
指定當您建置或部署資料庫專案時,產生建置指令碼的位置。 如果指定相對路徑,您必須指定該路徑會相對於資料庫專案路徑。 如果路徑不存在,將會建立路徑。 |
建置輸出檔名 |
DatabaseProjectName.sql |
指定當您建置資料庫專案時要給產生指令碼的名稱。 如果有選取 [自動產生建置輸出檔名] 核取方塊,自動產生的檔名會覆寫您在此欄位指定的任何值。 |
將警告視為錯誤 |
否 |
指定出現警告時是否應取消建置和部署處理序。 如果清除這個核取方塊,當警告出現時,建置和部署處理序仍會繼續。 這個設定是針對專案而非使用者,並是儲存在 .dbproj 檔案中。 |
隱藏警告 |
空白 |
指定以逗號或分號分隔的編號清單,以識別隱藏的警告。 即使選取了 [警告視為錯誤] 核取方塊,已隱藏的警告還是不會出現在 [錯誤清單] 視窗中,而且不會影響建置順利完成。
注意事項
如果您不想在整個資料庫專案中隱藏某種警告類型,您也可以針對特定檔案隱藏該類型。如需詳細資訊,請參閱 HOW TO:隱藏一或多種警告類型。
|
部署
您可以使用下列設定來控制資料庫專案的部署。
欄位 |
預設值 |
說明 |
為下列項目設定部署設定 |
我的專案設定 |
指定您要修改與其他開發人員共用之專案的部署設定,或是只要修改隔離開發環境的設定。 |
部署動作 |
建立部署指令碼 (.sql) 並部署到資料庫 |
指定您要將所建立的 .sql 指令碼部署到目標伺服器,還是建立指令碼但不加以部署。 |
部署指令碼名稱 |
ProjectName.sql |
指定您要用於部署指令碼的名稱。 |
目標連接 |
空白 |
指定連接資訊,以連接所指定建置組態的目標資料庫伺服器。 |
目標資料庫名稱 |
DatabaseProjectName |
指定要透過在 [目標] 連接欄位中指定的連接來建立或更新的資料庫名稱。 |
部署組態檔
部署組態檔包含每一個部署目標特有的詳細資料,如下表所述。
欄位 |
預設值 |
說明 |
部署比較定序 |
使用我的專案定序。 |
指定部署期間用以比較來源與目標模型的定序。 如果您按一下 [使用我的專案定序],則會使用來源定序。 如果您按一下 [使用伺服器的定序],則會使用目標定序。 |
部署資料庫屬性 |
是 |
指定當您部署資料庫專案時是否部署 CatalogProperties.catalogproperties 設定。 |
永遠重新建立資料庫 |
否 |
指定是否將捨棄並重新建立資料庫,而不執行累加部署。 如果要對全新部署的資料庫執行「資料庫單元測試」(Database Unit Test),就可以選取這個核取方塊。 如果清除這個核取方塊,則會更新現有的資料庫,而不會捨棄並重新建立資料庫。 |
如果可能發生資料遺失,則封鎖累加部署 |
是 |
指定如果更新導致資料遺失,是否將停止部署。 如果選取這個核取方塊,那麼可能會使資料遺失的變更會導致部署停止並顯示錯誤,以免發生遺失資料的情況。 例如,若 varchar(50) 資料行變更為 varchar(30),則會停止部署。
注意事項
只有當可能發生資料遺失的資料表包含資料時,才會封鎖部署。如果不會遺失任何資料,則會繼續進行部署。
|
在單一使用者模式中執行部署指令碼 |
否 |
指定部署時是否應設定資料庫進入單一使用者模式。 如果是部署到共用資料庫伺服器,則應在部署資料庫變更時讓資料庫進入單一使用者模式。 這個步驟可防止其他使用者在您部署專案時進行變更。 如果您已經在資料庫專案屬性的 [專案設定] 索引標籤上啟用全文檢索搜尋,則無法使用這個選項。
重要事項
當資料庫處於單一使用者模式時,一旦您將變更部署到資料庫時,會立即卸除此資料庫的所有其他現有連接。會指定 ROLLBACK IMMEDIATE 子句,以便在資料庫處於單一使用者模式時,立刻結束暫止的交易。
|
在部署之前備份資料庫 |
否 |
指定是否應在部署之前備份資料庫。 如果清除這個核取方塊,將不會自動執行備份。 如果選取核取方塊,則會在預先部署指令碼中加入備份資料庫的陳述式。 備份作業的速度可能會很慢。 如果是建置和部署至隔離的開發環境,則可以選擇不要在建置和部署之前備份資料庫。
重要事項
在部署到實際執行伺服器之前,請務必備份資料庫。如果建置和部署時沒有自動備份資料庫,請先手動備份資料庫,然後再部署變更。
|
針對位於目標資料庫但不在資料庫專案內的物件產生 DROP 陳述式 |
否 |
指定如果物件位於目標資料庫但不在資料庫專案內,是否應在部署指令碼執行時捨棄。 您可以排除專案中的某些檔案,以便從組建指令碼中暫時移除這些檔案。 但是,您可以將這些物件的現有版本留在目標資料庫中。 如果選取 [永遠重新建立資料庫] 核取方塊,這個核取方塊不會有任何作用,因為這時會捨棄整個資料庫。 |
請勿使用 ALTER ASSEMBLY 陳述式來更新 CLR 型別。 |
否 |
指定當您部署變更時,是否要使用 ALTER ASSEMBLY 陳述式來更新 Common Language Runtime (CLR) 型別,或者是否會卸除執行個體化 CLR 型別的物件,然後再重新建立此物件。 |
下表描述進階的部署設定。
欄位 |
預設值 |
說明 |
AbortOnFirstError |
True |
指定在出現第一個錯誤時是否應取消部署。 |
BuildtimeContributorsMustExist |
True |
指定 (在資料庫專案建置時註冊的) 部署參與者是否必須在部署專案時進行註冊。 |
CheckNewConstraints |
True |
建立或重建條件約束時,指定是否要在預設開啟 NOCHECK 選項的情況下建立條件約束。 在部署指令碼的結尾,將會加入陳述式區塊,而該陳述式區塊會將所有條件約束視為一組進行檢查。 將這個屬性設定為 True,即可將資料檢查延後到部署指令碼的結尾,當您部署結構描述時,就不會在部署過程中遇到資料錯誤 (由於檢查或外部索引鍵條件約束所引起)。 |
CommentOutSetVarDeclarations |
False |
指定是否應在產生的部署指令碼中將 SetVar 變數的宣告標記為註解。 如果您打算在使用 SQLCMD.EXE 等工具進行部署時在命令列上指定值,則可以選擇這麼做。 |
DisableAndReenableDdlTriggers |
True |
指定是否在部署處理序開始時停用資料定義語言 (DDL) 觸發程序,然後在部署處理序結束時重新啟用。 |
DropConstraintsNotInSource |
True |
指定當您將更新部署到資料庫時,是否要從目標資料庫中卸除資料庫專案中不存在的條件約束。 |
DropIndexesNotInSource |
True |
指定當您將更新部署到資料庫時,是否要從目標資料庫中卸除資料庫專案中不存在的索引。 |
EnforceMinimalDependencies |
False |
指定是否剖析和解譯程序、純量函式和資料表值函式的主體。 如果啟用這項設定,則不會識別主體內的相依性,但是會識別物件的定義變更。 將這個選項設定為 True,可能會改善效能,但是遺漏的相依性可能會在部署時造成問題。 |
GenerateDeployStateChecks |
True |
指定是否在部署指令碼中產生陳述式,以驗證資料庫名稱和伺服器名稱是否符合資料庫專案中指定的名稱。 |
IgnoreAnsiNulls |
False |
指定將更新部署到資料庫時應該忽略或更新 ANSI Nulls 設定的差異。 |
IgnoreAuthorizer |
False |
指定將更新部署到資料庫時應該忽略或更新 Authorizer 的差異。 |
IgnoreColumnCollation |
False |
指定將更新部署到資料庫時應該忽略或更新資料行定序的差異。 |
IgnoreComments |
False |
指定將更新部署到資料庫時應該忽略或更新註解的差異。 |
IgnoreCryptographicProviderFilePath |
False |
指定將更新部署到資料庫時應該忽略或更新密碼編譯提供者的檔案路徑差異。 |
IgnoreDdlTriggerOrder |
False |
指定將更新部署到資料庫或伺服器時,應該忽略還是更新資料定義語言 (DDL) 觸發程序的順序差異。 |
IgnoreDdlTriggerState |
False |
指定將更新部署到資料庫時應該忽略或更新資料定義語言 (DDL) 觸發程序的啟用或停用狀態差異。 |
IgnoreDefaultSchema |
False |
指定將更新部署到資料庫時,是否應該更新使用者的預設結構描述設定 (如果不同的話)。 |
IgnoreDmlTriggerOrder |
False |
指定將更新部署到資料庫時應該忽略或更新資料操作語言 (DML) 觸發程序的順序差異。 |
IgnoreDmlTriggerState |
False |
指定將更新部署到資料庫時應該忽略或更新 DML 觸發程序的啟用或停用狀態差異。 |
IgnoreExtendedProperties |
False |
指定將更新部署到資料庫時應該忽略或更新擴充屬性的差異。 |
IgnoreFilegroupPlacement |
True |
指定將更新部署到資料庫時應該忽略或更新檔案群組中的物件位置差異。 |
IgnoreFillFactor |
True |
指定將更新部署到資料庫時應該忽略索引儲存區的填滿因數差異或是發出警告。 |
IgnoreIdentitySeed |
False |
指定將更新部署到資料庫時應該忽略或更新識別資料行的種子差異。 |
IgnoreIncrement |
False |
指定將更新部署到資料庫時應該忽略或更新識別資料行的增量差異。 |
IgnoreIndexOptions |
False |
指定將更新部署到資料庫時應該忽略或更新索引選項的差異。 |
IgnoreIndexPadding |
True |
指定將更新部署到資料庫時應該忽略或更新索引填補的差異。 |
IgnoreKeywordCasing |
True |
指定將更新部署到資料庫時應該忽略或更新關鍵字的大小寫差異。 |
IgnoreLockHintsOnIndexes |
False |
指定將更新部署到資料庫時應該忽略或更新索引的鎖定提示差異。 |
IgnoreLoginSids |
False |
指定將更新部署到資料庫時應該忽略或更新安全性識別碼 (SID) 的差異。 |
IgnoreNotForReplication |
False |
指定將更新部署到資料庫時應該忽略還是更新 NOT FOR REPLICATION 設定的差異。 |
IgnoreObjectPlacementOnPartitionScheme |
True |
指定將更新部署到資料庫時應該忽略或更新資料分割資料表或索引的分割與檔案群組之對應的差異。 |
IgnorePartitionSchemes |
False |
指定將更新部署到資料庫時,應該忽略還是更新資料分割配置和函式的差異。 |
IgnorePermissions |
False |
指定將更新部署到資料庫時應該忽略或更新使用權限的差異。 |
IgnoreQuotedIdentifiers |
False |
指定將變更部署到資料庫時應該忽略或更新引號識別項設定的差異。 |
IgnoreRoleMembership |
False |
指定將更新部署到資料庫時應該忽略或更新登入的角色成員資格差異。 |
IgnoreRouteLifetime |
True |
指定將更新部署到資料庫時應該忽略或更新 SQL Server 在路由表中保留路由的時間量差異。 |
IgnoreSemicolonBetweenStatements |
True |
指定將更新部署到資料庫時將要忽略或更新介於 Transact-SQL 陳述式之間的分號差異。 |
IgnoreStatisticsSample |
True |
指定將更新部署到資料庫時將要忽略或更新用於 CREATE STATISTICS 的範例差異。 |
IgnoreTableOptions |
False |
指定將更新部署到資料庫時將要忽略或更新資料表選項的差異。 |
IgnoreUserSettingsObjects |
False |
指定將更新部署到資料庫時將要忽略或更新使用者設定物件的差異。 |
IgnoreWhitespace |
True |
指定將更新部署到資料庫時將要忽略或更新空白字元的差異。 |
IgnoreWithNocheckOnCheckContraints |
False |
指定將更新部署到資料庫時將要忽略或更新檢查條件約束的 WITH NOCHECK 子句值差異。 |
IgnoreWithNocheckOnForeignKeys |
False |
指定將更新部署到資料庫時將要忽略或更新外部索引鍵的 WITH NOCHECK 子句值差異。 |
IncludeTransactionalScripts |
False |
指定在部署到資料庫時是否應該盡可能使用交易陳述式。 |
ScriptDatabaseCollation |
True |
指定將更新部署到資料庫時應該忽略或更新資料庫定序的差異。 |
TreatVerificationErrorsAsWarnings |
False |
指定在部署驗證期間遇到的錯誤是否應該視為警告。 在對目標資料庫執行所產生的部署計劃之前,會對該計劃執行檢查。 計劃驗證作業會偵測必須卸除才能進行變更的問題,例如遺失僅限於目標的物件 (如索引)。 驗證作業也會偵測因為參考複合專案而存在相依性 (如資料表或檢視表) 的情況,但此種相依性不存在於目標資料庫中。 您可以選擇執行此作業,以取得所有部署問題的完整清單,而不是在遇到第一個錯誤時便停止部署。 |
UnmodifiableObjectWarnings |
True |
指定在無法修改的物件中發現差異時 (例如,檔案的大小或路徑不同) 是否應該產生警告。 |
VerifyDeployment |
True |
指定是否應該在部署之前執行檢查,該檢查若發現可能阻撓成功部署的問題時,便會停止部署。 例如,目標資料庫上若有不存在於資料庫專案中的外部索引鍵,將會在部署時造成錯誤,而您的部署作業可能會停止。 |
請參閱
工作
HOW TO:建置資料庫專案來產生已編譯的結構描述 (.dbschema) 檔案