数据库项目设置概述
使用数据库项目设置可控制数据库和生成配置的各个方面。 这些设置分为以下几个类别:
项目设置
生成事件
引用
生成
部署
项目设置、生成事件和部署属性存储在数据库项目中,并通过版本控制进行共享。
提示
用户特定的设置存储在 .dbproj.user 文件中。 项目特定的设置存储在 .dbproj 文件中。
项目设置
下表中的设置适用于此数据库项目的所有配置。
字段 |
默认值 |
说明 |
---|---|---|
项目版本 |
在创建数据库项目时指定的 SQL Server 的版本。 |
指定针对此数据库项目使用的 SQL Server 的版本。 |
数据库模型的排序规则 |
英语(美国)(1033) - CI |
指定用于对存储数据库模型的基础 SQL Server Compact Edition 数据库中的数据进行排序和比较的默认规则。 您应为此设置指定一个尽可能接近目标数据库排序规则的值。 您可能需要凭大小写区分排序规则。 例如,可以对模型使用不区分大小写的排序规则,并对数据库使用区分大小写的排序规则。 可以重写对象定义内的默认排序规则。
注意
所有平台的默认排序规则都是相同的。系统不会为了与当前的区域设置相匹配而更改默认值。您必须手动将默认排序规则设置为适合于您的区域设置的排序规则。
|
默认架构 |
dbo |
指定在其中创建对象的默认架构。 更改一个或多个对象定义时,可以重写此设置。 |
在文件名中包含架构名 |
是 |
指定文件名是否将架构作为前缀包括进来,例如,dbo.Products.table.sql。 如果清除此复选框,则对象的文件名将采用以下格式:对象名称.ObjectType.sql。 |
目录属性文件 |
Properties\CatalogProperties.catalogproperties |
包含目标数据库的详细属性设置。 所有属性都与 SQL Server 数据库的属性相匹配。 有关更多信息,请参见 Microsoft 网站上的以下主题:数据库属性(选项页)。 |
生成事件设置
可以使用这些设置来指定生成操作启动之前执行的命令行和生成操作完成后执行的命令行。
字段 |
默认值 |
说明 |
---|---|---|
预先生成事件命令行 |
无 |
指定生成项目之前执行的命令行。 单击“编辑预先生成事件”可以修改此命令行。 |
后期生成事件命令行 |
无 |
指定生成项目之后执行的命令行。 单击“编辑后期生成事件”可以修改此命令行。 |
运行后期生成事件 |
生成成功时 |
指定后期生成命令行应始终运行、仅在生成成功后运行还是仅在生成更新项目输出(生成脚本)时运行。 |
有关更多信息,请参见如何:指定运行预先生成或后期生成的自定义操作和预生成事件/生成后事件命令行对话框(数据库项目)。
引用
使用此页,可以定义与跨数据库引用相关联的服务器变量和数据库变量。 另外,还可以指定这些变量的值。 有关更多信息,请参见在数据库项目中使用引用。
生成设置
可以使用这些设置来影响生成脚本和目标数据库。 这些设置特定于您指定的配置和平台,通常随用户的不同而不同。
字段 |
默认值 |
说明 |
生成输出路径 |
. \sql\ |
指定生成或部署数据库项目时产生生成脚本的位置。 如果指定的是相对路径,则该路径必须是相对于数据库项目路径的路径。 如果指定的路径不存在,则创建该路径。 |
生成输出文件名 |
数据库项目名称.sql |
指定要为生成数据库项目时所生成的脚本赋予的名称。 如果“自动生成生成输出文件名”复选框处于选中状态,则自动生成的文件名会覆盖您在该字段中指定的任何值。 |
将警告视为错误 |
否 |
指定在出现警告时是否应取消生成和部署过程。 如果清除此复选框,则当警告出现时,仍将继续生成和部署过程。 此设置是项目(而不是用户)所特有的,它存储在 .dbproj 文件中。 |
取消警告 |
空白 |
指定一个以逗号或分号分隔的编号列表,这些编号标识取消显示的警告。 即使您选中了“将警告视为错误”复选框,禁止显示的警告也不会显示在“错误列表”窗口中并且不会影响生成的成功。
注意
此外,如果您不希望在整个数据库项目中取消显示某个类型的警告,则可以为某个特定文件取消显示该类型的警告。有关更多信息,请参见如何:禁止显示一种或多种类型的警告。
|
部署
可以使用这些设置来控制数据库项目的部署。
字段 |
默认值 |
说明 |
针对以下目标配置部署设置 |
我的项目设置 |
指定是希望修改与其他开发人员共享的项目的部署设置,还是希望只修改独立开发环境的设置。 |
部署操作 |
创建一个部署脚本 (.sql) 并将其部署到数据库 |
指定是希望将创建的 .sql 脚本部署到目标服务器,还是希望创建脚本但不对其进行部署。 |
部署脚本名称 |
项目名称.sql |
指定要用于部署脚本的名称。 |
目标连接 |
空白 |
指定要用作指定生成配置的目标的数据库服务器的连接信息。 |
目标数据库名称 |
数据库项目名称 |
指定要通过“目标连接”字段中指定的连接来创建或更新的数据库的名称。 |
部署配置文件
部署配置文件包含特定于每个部署目标的详细信息,如下表所述。
字段 |
默认值 |
说明 |
部署比较排序规则 |
使用我的项目的排序规则。 |
指定在部署过程中比较源模型和目标模型时要使用的排序规则。 如果单击“使用我的项目的排序规则”,则使用源排列规则。 如果单击“使用服务器的排序规则”,则使用目标排列规则。 |
部署数据库属性 |
是 |
指定是否在部署数据库项目时部署 CatalogProperties.catalogproperties 设置。 |
始终重新创建数据库 |
否 |
指定是否将删除并重新创建数据库,而不是执行增量部署。 例如,如果您要对数据库的干净部署运行数据库单元测试,则可能需要选中此复选框。 如果清除此复选框,则将更新现有数据库,而不是删除并重新创建数据库。 |
如果可能发生数据丢失则阻止增量部署 |
是 |
指定在更新将造成数据丢失的情况下是否应停止部署。 如果选中此复选框,则可能造成数据丢失的更改会导致部署因出现错误而停止,从而防止丢失数据。 例如,在将 varchar(50) 列更改为 varchar(30) 时,部署将会停止。
注意
只有当可能发生数据丢失的表中包含数据时,部署才会被阻止。如果不会丢失任何数据,则部署将继续。
|
以单用户模式执行部署脚本 |
否 |
指定在部署过程中是否应将数据库置于单用户模式。 如果您是部署到共享数据库服务器,则应在部署数据库更改时将数据库置于单用户模式。 此步骤可防止其他用户在您部署项目时对数据库进行更改。 如果您在数据库项目属性的“项目设置”选项卡上启用了全文搜索,则此选项将不可用。
重要事项
如果数据库处于单用户模式,那么,一旦您将更改部署到该数据库中,当前与该数据库建立的其他所有连接都将断开。指定 ROLLBACK IMMEDIATE 子句的目的在于,在将数据库置于单用户模式之后,挂起的事务会立即终止。
|
部署前备份数据库 |
否 |
指定在部署数据库之前是否应对其进行备份。 如果清除此复选框,则不会自动执行备份。 如果选中该复选框,则会在预先部署脚本中添加相应的语句来备份数据库。 备份操作可能会很慢。 如果您是在独立开发环境中进行生成和部署,则您可能会决定在生成和部署数据库之前不对其进行备份。
重要事项
在部署到成品服务器之前,应始终备份数据库。如果不自动将数据库作为生成和部署过程的一部分进行备份,则应在部署更改之前手动备份数据库。
|
为目标数据库中存在而数据库项目中不存在的对象生成 DROP 语句 |
否 |
指定是否应将目标数据库中存在而数据库项目中不存在的对象作为部署脚本的一部分删除。 您可以排除项目中的一些文件以将它们暂时从生成脚本中移除。 但是,您可能希望在目标数据库中保留这些对象的现有版本。 如果选中“始终重新创建数据库”复选框,该复选框将没有任何作用,因为数据库会被删除。 |
不使用 ALTER ASSEMBLY 语句更新 CLR 类型 |
否 |
指定在部署更改时,是否使用 ALTER ASSEMBLY 语句来更新公共语言运行时 (CLR) 类型,或者是否将删除并重新创建实例化 CLR 类型的对象。 |
下表描述了高级部署设置。
字段 |
默认值 |
说明 |
AbortOnFirstError |
True |
指定在第一次发生错误时是否应取消部署。 |
BuildtimeContributorsMustExist |
True |
指定在部署项目时,是否需要注册部署参与者(生成数据库项目时注册的参与者)。 |
CheckNewConstraints |
True |
指定在创建或重新创建约束时,默认情况下是否将使用 NOCHECK 选项创建约束。 在部署脚本的结尾,将添加一个语句块,以将所有约束作为一个集合进行检查。 通过将此属性设置为 True,可将数据检查延迟到部署脚本的结尾,从而可以顺利部署架构,而不会在部署过程中遇到数据错误(由于有 CHECK 或外键约束)。 |
CommentOutSetVarDeclarations |
False |
指定是否应在生成的部署脚本中注释掉 SetVar 变量的声明。 如果您打算在部署时使用 SQLCMD.EXE 之类的工具在命令行中指定这些值,则可以选择这样做。 |
DisableAndReenableDdlTriggers |
True |
指定是否在部署过程开始时禁用数据定义语言 (DDL) 触发器,在部署过程结束时重新启用它。 |
DropConstraintsNotInSource |
True |
指定在将更新部署到数据库时,是否将从目标数据库中删除数据库项目中不存在的约束。 |
DropIndexesNotInSource |
True |
指定在将更新部署到数据库时,是否将从目标数据库中删除数据库项目中不存在的索引。 |
EnforceMinimalDependencies |
False |
指定是否分析并解释过程体、标量函数体和表值函数体。 如果启用此设置,则将不会标识这些主体中的依赖项,但会标识对对象定义所做的更改。 通过将此选项设置为 True,您可能会提高性能,但缺失的依赖项可能会在部署时导致问题。 |
GenerateDeployStateChecks |
True |
指定是否在部署脚本中生成语句,以验证数据库名称和服务器名称是否与数据库项目中指定的名称相匹配。 |
IgnoreAnsiNulls |
False |
指定在将更新部署到数据库时,是应忽略还是应更新 ANSI Null 设置方面的差异。 |
IgnoreAuthorizer |
False |
指定在将更新部署到数据库时,是应忽略还是应更新授权者方面的差异。 |
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 |
指定在将更新部署到数据库时,是应忽略还是应更新“不用于复制”设置方面的差异。 |
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 |
指定在将更新部署到数据库时,是将忽略还是将更新 CHECK 约束的 WITH NOCHECK 子句值方面的差异。 |
IgnoreWithNocheckOnForeignKeys |
False |
指定在将更新部署到数据库时,是将忽略还是将更新外键的 WITH NOCHECK 子句值方面的差异。 |
IncludeTransactionalScripts |
False |
指定在部署到数据库时,是否应在可能的位置使用事务性语句。 |
ScriptDatabaseCollation |
True |
指定在将更新部署到数据库时,是应忽略还是应更新数据库排序规则方面的差异。 |
TreatVerificationErrorsAsWarnings |
False |
指定是否应将部署验证期间遇到的错误视为警告。 在对目标数据库执行生成的部署计划之前,将对该计划执行检查。 计划验证过程将检测丢失仅适用于目标的对象(如索引)之类的问题,必须删除这些对象才能进行更改。 验证过程还将检测以下情况:由于存在对复合项目的引用,因而存在依赖项(如表或视图),但这些依赖项不存在于目标数据库中。 您可能会选择这样做以获取所有部署问题的完整列表,而不是在出现第一个错误时停止部署。 |
UnmodifiableObjectWarnings |
True |
指定在对象中发现无法修改的差异时(例如,当某个文件的文件大小或文件路径不同时),是否应生成警告。 |
VerifyDeployment |
True |
指定是否应在部署之前执行检查,并在发现可能会阻止部署成功的问题时停止部署。 例如,如果目标数据库上的外键在数据库项目中并不存在,并且这种情况在部署时将导致错误,则部署可能将停止。 |
请参见
任务
如何:生成数据库项目以生成经过编译的架构 (.dbschema) 文件