Visual Studio 数据库功能的自动化命令参考
可以使用 Visual Studio 设计时可扩展性 (DTE) 在 Visual Studio 命令窗口中执行某些操作。 例如,如果要将多个脚本导入数据库项目中,则可能就要这样做。
在 Visual Studio 高级专业版 或 Visual Studio 旗舰版 的此版本中,可以:
将数据库或服务器对象和设置导入数据库项目中
从脚本导入对象和设置
比较数据库架构
比较数据库数据
执行重构操作
使用分部项目
使用架构视图中的对象
分析数据库代码
数据库自动化命令的快速参考
下表包含 Visual Studio 数据库功能的所有 DTE 命令的快速参考:
区域 |
命令 |
---|---|
数据比较 |
Data.NewDataComparison Data.DataCompareExportToEditor Data.DataCompareExportToFile Data.DataCompareFilterAllRecords Data.DataCompareFilterDifferentRecords Data.DataCompareFilterIdenticalRecords Data.DataCompareFilterOnlyInSourceRecords Data.DataCompareFilterOnlyInTargetRecords Data.DataCompareFilterSelectedRecords Data.DataCompareRefresh Data.DataCompareSelectSrcTgtDatabases Data.DataCompareShowUpdateScript Data.DataCompareStop Data.DataCompareWriteUpdates Data.DataDataCompareRefreshScriptPreview |
数据生成器 |
Data.DataGeneratorExcludeAllColumns Data.DataGeneratorExcludeAllTables Data.DataGeneratorIncludeAllColumns Data.DataGeneratorIncludeAllTables Data.DataGeneratorPlanRefresh Data.DataGeneratorPopulate Data.DataGeneratorPreview |
Import |
Project.ImportDatabaseSchema Project.ImportScript |
分部项目 |
Project.VSDBExportAsPartialProject Project.VSDBImportPartialProject Project.VSDBRemovePartialProject |
重构 |
Data.RenameRefactor Data.FullyQualifyNameRefactor Data.MoveSchemaRefactor Data.RenameServerDatabaseReferenceRefactor Data.WildcardExpansionRefactor |
架构比较 |
Data.NewSchemaComparison Data.SchemaCompareExportToEditor Data.SchemaCompareExportToFile Data.SchemaCompareFilterAllObjects Data.SchemaCompareFilterDifferentObjects Data.SchemaCompareFilterEqualObjects Data.SchemaCompareFilterMissingObjects Data.SchemaCompareFilterNewObjects Data.SchemaCompareFilterNonSkipObjects Data.SchemaCompareFilterSkipObjects Data.SchemaCompareNextChange Data.SchemaCompareObjectDefnHorizontal Data.SchemaCompareObjectDefnOff Data.SchemaCompareObjectDefnVertical Data.SchemaCompareOptions Data.SchemaComparePreviousChange Data.SchemaCompareRefresh Data.SchemaCompareRefreshScriptPreview Data.SchemaCompareRestoreUpdateActionDefaults Data.SchemaCompareRestoreUpdateSelectionDefaults Data.SchemaCompareSelectSourceTargetSchemas Data.SchemaCompareShowUpdateScript Data.SchemaCompareSpecifySQLCMDVariables Data.SchemaCompareStop Data.SchemaCompareWriteUpdates |
架构视图 |
Data.SchemaViewShowDependencies Data.ShowBuiltInElementsInSchemaView Data.ShowExternalElementsInSchemaView Data.DeleteObjectSchemaView Data.SynchronizeSchemaView Data.ToggleSchemaViewBySchema |
Transact-SQL 编辑器 |
Data.SqlEditorCancelQueryExecution Data.SqlEditorConnect Data.SqlEditorDisconnect Data.SqlEditorDisplayEstimatedExecutionPlan Data.SqlEditorEditSqlCmdFile Data.SqlEditorExecuteSql Data.SqlEditorIncludeActualExecutionPlan Data.SqlEditorIncludeStatistics Data.SqlEditorNewQueryConnection Data.SqlEditorQueryOptions Data.SqlEditorResetClientStatistics Data.SqlEditorResultsAsFile Data.SqlEditorResultsAsGrid Data.SqlEditorResultsAsText Data.SqlEditorSqlCmdMode Data.SqlEditorToggleResultsPane Data.SqlEditorValidateSqlSyntax |
数据库代码分析 |
Data.StaticCodeAnalysisConfigure Data.StaticCodeAnalysisRun |
导入数据库或服务器对象和设置
可以从 Visual Studio 命令窗口中使用 Data.ImportDatabaseSchema 命令,从数据库或服务器导入对象和设置。 在**“解决方案资源管理器”**中突出显示数据库或服务器项目,然后再使用 Project.ImportDatabaseSchema 命令。 有关更多信息,请参见如何:导入数据库对象和设置或如何:导入服务器对象和设置。
对于 Data.ImportDatabaseSchema 命令可以指定以下参数:
Parameter |
必需 |
注释 |
---|---|---|
/ConnectionString "YourString" |
是 |
指定要从其导入对象和设置的数据库的连接字符串。 若要导入服务器对象,请指定“master”数据库。 |
/AlwaysScriptColumnCollation |
否 |
指定此选项将始终显式编写列排序规则的脚本。 如果不指定此选项,则仅对列排序规则与数据库排序规则不匹配的那些情况显式指定列排序规则。 |
/IgnoreExtendedProperties |
否 |
如果不希望导入源数据库及其内容的扩展属性,请指定此选项。 |
/IgnoreFileSizes |
否 |
如果不希望导入日志文件和文件组的大小,请指定此选项。 |
/OverrideDBConfiguration |
否 |
如果要更新数据库项目的设置以便与源数据库的设置匹配,请指定此选项。 |
/Overwrite |
否 |
已忽略此选项。 |
/DirectoryLimit N |
否 |
指定此选项将通过限制项目中每个文件夹中存储的数据库对象的数量,从而缩短打开和使用数据库项目所需的时间。 将 N 替换为磁盘上一个目录中要允许的文件数。 |
/IgnorePermissions |
否 |
如果不希望从元数据库导入权限,请指定此选项。
注意
使用向导导入对象和设置时,默认情况下忽略权限。为了提高导入大型数据库时的性能,可能要指定此选项。
|
/AddImportedPermissionsToModel |
否 |
如果未指定 /IgnorePermissions 并且如果要向数据库的模型添加权限,请指定此选项。 如果向模型添加权限,则加载数据库项目将变慢。 |
从脚本导入对象和设置
可以从 Visual Studio 命令窗口中使用 Data.ImportScript 命令从脚本导入对象定义。 在**“解决方案资源管理器”**中突出显示数据库或服务器项目,然后再使用 Project.ImportScript 命令。 有关更多信息,请参见 如何:从脚本导入数据库对象。
对于 Data.ImportScript 命令可以指定以下参数:
Parameter |
必需 |
注释 |
---|---|---|
/FileName MyFile.sql |
是 |
指定要导入的脚本文件的名称。 如果要导入的文件名中含有空格,则必须将文件名置于引号内(例如“My Script.sql”)。 |
/编码 {Unicode | UTF32 | UTF8 | UTF7} |
否 |
指定保存文件时所采用的编码。 如果不指定编码,则假定文件采用 UTF8 编码。 |
/Overwrite |
否 |
如果要覆盖数据库数据中已出现的对象定义,请指定此选项。 如果不指定此选项,则不会导入已存在的对象。 |
/IgnoreExtendedProperties |
否 |
如果不希望导入源数据库及其内容的扩展属性,请指定此选项。 |
/IgnorePermissions |
否 |
如果不希望从元数据库导入权限,请指定此选项。
注意
使用向导导入脚本时,默认情况下忽略权限。为了提高导入大型脚本时的性能,可能要指定此选项。
|
/AddImportedPermissionsToModel |
否 |
如果未指定 /IgnorePermissions 并且如果要向数据库的模型添加权限,请指定此选项。 如果向模型添加权限,则加载数据库项目将变慢。 |
比较数据库架构
可以从 Visual Studio 命令窗口中使用 Data.NewSchemaComparison 命令比较两个数据库架构。 请指定源架构提供程序和目标架构提供程序。 对于每个提供程序,请指定该提供程序的类型和标识。 有关更多信息,请参见 如何:比较数据库架构。
对于 Data.NewSchemaComparison 和 Data.SchemaCompareSelectSourceTargetSchemas 命令的每个提供程序,都可以指定以下参数:
Parameter |
注释 |
---|---|
/ProviderType ConnectionBased /ConnectionString "YourString" |
如果要指定数据库的连接字符串作为一个架构,请指定此语法。 |
/ProviderType ConnectionBased /ConnectionName ConnectionName |
如果要指定数据库的连接名称作为一个架构,请指定此语法。 |
/ProviderType ProjectBased /ProjectName 项目名称.dbproj |
如果要指定数据库项目作为一个架构,请指定此语法。 如果要导入的文件名中含有空格,则必须将文件名置于引号内(例如“My Project.dbproj”)。 |
/ProviderType FileBased /ProjectName 项目名称.dbschema |
如果要指定经过编译的 .dbschema 文件作为一个架构,请指定此语法。 如果要导入的文件名中含有空格,则必须将文件名置于引号内(例如“My Project.dbschema”)。 |
/ProviderType FileBased /ProjectName 项目名称.dacpac |
如果要将数据层应用程序项目的已编译输出(.dacpac 文件)指定为一个架构,请指定此语法。 如果要导入的文件名中含有空格,则必须将文件名置于引号内(例如“My Project.dacpac”)。 |
其他架构比较命令
下表列出用于架构比较的其他 DTE 命令以及您可以为各 DTE 命令指定的参数:
命令 |
Parameter |
注释 |
---|---|---|
SchemaCompareExportToEditor |
无 |
将更新脚本导出到 Transact-SQL 编辑器 |
SchemaCompareExportToFile |
Filename |
将更新脚本导出到指定的文件 |
SchemaCompareFilterAllObjects |
无 |
移除所有筛选器,所有对象均显示在架构比较结果中 |
SchemaCompareFilterDifferentObjects |
无 |
在“架构比较”结果中仅显示不同的对象。 |
SchemaCompareFilterEqualObjects |
无 |
在“架构比较”结果中仅显示相同的对象。 |
SchemaCompareFilterMissingObjects |
无 |
在“架构比较”结果中仅显示在目标中出现但不在源中出现的对象。 |
SchemaCompareFilterNewObjects |
无 |
在“架构比较”结果中仅显示在源中出现但不在目标中出现的对象。 |
SchemaCompareFilterNonSkipObjects |
无 |
在“架构比较”结果中仅显示更新操作设置为跳过的对象。 |
SchemaCompareFilterSkipObjects |
无 |
在“架构比较”结果中仅显示更新操作设置为跳过的对象。 |
SchemaCompareNextChange |
无 |
滚动架构比较结果以显示下一个差异 |
SchemaCompareObjectDefnHorizontal |
无 |
在架构比较结果的对象定义窗格中并行显示源和目标对象定义 |
SchemaCompareObjectDefnOff |
无 |
隐藏架构比较结果的对象定义窗格的显示 |
SchemaCompareObjectDefnVertical |
无 |
在架构比较结果的对象定义窗格中上下平铺显示源和目标对象定义 |
SchemaCompareOptions |
无 |
打开“架构比较选项”对话框。 |
SchemaComparePreviousChange |
无 |
滚动架构比较结果以显示上一个差异 |
SchemaCompareRefresh |
无 |
再次比较源架构和目标架构 |
SchemaCompareRefreshScriptPreview |
无 |
更新架构比较结果的架构更新脚本窗格 |
SchemaCompareRestoreUpdateActionDefaults |
无 |
将所有更新操作恢复到比较完成时所处的状态 |
SchemaCompareRestoreUpdateSelectionDefaults |
无 |
将指定行的更新操作恢复到比较完成时所处的状态 |
SchemaCompareShowUpdateScript |
无 |
如果“架构更新脚本”窗口尚未显示,则打开该窗口 |
SchemaCompareSpecifySQLCMDVariables |
无 |
打开对话框,您可以用来指定应在比较架构时用于 SQLCMD 变量的值 |
SchemaCompareStop |
无 |
暂停正在进行的架构比较。 |
SchemaCompareWriteUpdates |
无 |
如果目标架构允许更新,则将更新写入目标架构。 |
比较数据库数据
可以从 Visual Studio 命令窗口中使用 Data.NewDataComparison 命令比较两个数据库中的数据。 有关更多信息,请参见 如何:比较并同步两个数据库的数据。
对于 Data.NewDataComparison 和数据可以指定以下参数。 DataCompareSelectSrcTgtDatabases commands:
Parameter |
必需 |
注释 |
---|---|---|
/SrcServerName ServerName |
是 |
指定包含比较源数据的服务器的名称。 |
/SrcDatabaseName DatabaseName |
是 |
指定包含比较源数据的数据库的名称。 |
/SrcUserName UserName |
是 |
指定要用于连接到包含比较源数据的数据库的用户名。 |
/SrcPassword Password |
是 |
指定要用于连接到包含比较源数据的数据库的用户名的密码。 |
/SrcDisplayName SourceData |
是 |
指定要在比较源的“架构比较”窗口中显示的名称。 |
/TargetServerName ServerName |
是 |
指定包含比较目标数据的服务器的名称。 |
/TargetDatabaseName DatabaseName |
是 |
指定包含比较目标数据的数据库的名称。 |
/TargetUserName UserName |
是 |
指定要用于连接到包含比较目标数据的数据库的用户名。 |
/TargetPassword Password |
是 |
指定要用于连接到包含比较目标数据的数据库的用户名的密码。 |
/TargetDisplayName TargetData |
是 |
指定要在比较目标的“架构比较”窗口中显示的名称。 |
其他数据比较命令
下表列出用于数据比较的其他 DTE 命令以及您可以为各 DTE 命令指定的参数:
命令 |
Parameter |
注释 |
---|---|---|
DataCompareExportToEditor |
无 |
将更新脚本导出到 Transact-SQL 编辑器。 |
DataCompareExportToFile |
Filename |
将更新脚本导出到指定的文件。 |
DataCompareFilterAllRecords |
无 |
移除所有筛选器。 所有对象都显示在“数据比较”结果中。 |
DataCompareFilterDifferentRecords |
无 |
在“数据比较”结果中仅显示不同的记录。 |
DataCompareFilterIdenticalRecords |
无 |
在“数据比较”结果中仅显示相同的记录。 |
DataCompareFilterOnlyInSourceRecords |
无 |
在“数据比较”结果中仅显示在源数据库中显示但不在目标数据库中显示的记录。 |
DataCompareFilterOnlyInTargetRecords |
无 |
在“数据比较”结果中仅显示在目标数据库中显示但不在源数据库中显示的记录。 |
DataCompareFilterSelectedRecords |
无 |
在“数据比较”结果中仅显示指定的记录。 |
DataCompareRefresh |
无 |
再次比较源数据库和目标数据库中的数据。 |
DataCompareShowUpdateScript |
无 |
如果数据更新脚本窗口尚未显示,请显示该数据更新脚本窗口。 |
DataCompareStop |
无 |
暂停正在进行的数据比较。 |
DataCompareWriteUpdates |
无 |
将更新写入目标数据库。 |
DataCompareDataCompareRefreshScriptPreview |
无 |
在数据更新脚本窗口中刷新该脚本。 |
执行重构操作
以下各节介绍数据库重构操作,您可以通过使用各操作的 DTE 命令和参数执行这些操作。
重命名重构
下表列出 Data.RenameRefactor 命令的参数:
Parameter |
注释 |
---|---|
/AssumeProjectSchemaForScripts |
指定此选项后,如果没有为对象指定任何架构,则假定对象位于项目的默认架构中。 如果不指定此选项,则假定默认架构为 dbo。 此参数为可选,并有默认值“true”。 此参数只会影响其“生成操作”不是“生成”的脚本。 生成脚本中的引用始终假定 dbo 架构。 |
/目标对象名称对象名称 |
指定想要重命名的对象的全名,包括架构(例如 dbo.Table1)。 |
/新名称新对象名称 |
指定要重命名的对象的新名称,不包括架构(例如 Table2)。 |
有关如何使用数据库重构来重命名数据库对象的更多信息,请参见重命名对数据库对象的所有引用。
完全限定名称
下表列出 Data.FullyQualifyNameRefactor 命令的参数:
Parameter |
注释 |
---|---|
/ScriptFilePath scriptPathAndFile |
指定要在其中完全限定名称的文件的完整路径和文件名。 例如:/ScriptFilePath "C:\Users\Username\Documents\Visual Studio 2010\Projects\MyDatabaseSolution\MyDatabaseProject\Schema Objects\Schemas\dbo\Views\MyView.view.sql" |
有关如何使用数据库重构来完全限定对象名称的更多信息,请参见完全限定数据库对象的名称。
将对象移动到新架构
下表列出 Data.MoveSchemaRefactor 命令的参数:
Parameter |
注释 |
---|---|
/AssumeProjectSchemaForScripts |
指定此选项后,如果没有为对象指定任何架构,则假定对象位于项目的默认架构中。 如果不指定此选项,则假定默认架构为 dbo。 . 此参数为可选,并有默认值“true”。 此参数只会影响其“生成操作”不是“生成”的脚本。 生成脚本中的引用始终假定 dbo 架构。 |
/目标对象名称对象名称 |
指定想要移动到一个新架构的对象的全名,包括架构(例如 dbo.Table1)。 |
/新架构名称架构名称 |
指定要将对象移动到的架构。 |
有关将数据库对象移至另一个架构如何使用数据库重构来将数据库对象移动到另一个架构的更多信息,请参见将数据库对象移至另一个架构。
重命名服务器和数据库引用
下表列出 Data.RenameServerDatabaseReferenceRefactor 命令的参数:
Parameter |
注释 |
---|---|
/OldServerName 服务器名称 |
指定要替换的服务器名称。 |
/NewServerName 服务器名称 |
指定要代替旧服务器加以使用的新服务器。 |
/OldDatabaseName 数据库名称 |
指定要替换的数据库名称。 |
/NewDatabaseName 数据库名称 |
指定要代替旧数据库加以使用的新数据库。 |
有关如何使用数据库重构来以其他名称或 SQLCMD 变量替换数据库和服务器名更多信息,请参见重命名对服务器或数据库的引用。
扩展通配符
下表列出 Data.WildcardExpansionRefactor 命令的参数:
Parameter |
注释 |
---|---|
/ScriptFilePath scriptPathAndFile |
指定要在其中完全限定名称的文件的完整路径和文件名。 文件名必须括在双引号中。 例如:/ScriptFilePath "C:\Users\Username\Documents\Visual Studio 2010\Projects\MyDatabaseSolution\MyDatabaseProject\Schema Objects\Schemas\dbo\Views\MyView.view.sql" |
有关如何使用数据库重构来扩展 SELECT 语句中的通配符字符的更多信息,请参见扩展 SELECT 语句中的通配符。
使用分部项目
下表列出用于分部项目的其他 DTE 命令以及您可以为各 DTE 命令指定的参数:
命令 |
Parameter |
注释 |
---|---|---|
Project.VSDBExportAsPartialProject |
Filename |
将解决方案资源管理器中的选择导出到指定的分部项目文件。 |
Project.VSDBImportPartialProject |
Filename |
将指定的分部项目(.files 文件)导入到数据库项目中。 |
Project.VSDBRemovePartialProject |
Filename |
从数据库项目中移除指定的分部项目。 |
有关分部项目的更多信息,请参见开始大型数据库的团队开发。
使用架构视图中的对象
下表列出用于架构视图的其他 DTE 命令以及您可以为各 DTE 命令指定的参数:
命令 |
Parameter |
注释 |
---|---|---|
SchemaViewShowDependencies |
无 |
在架构视图中打开当前选择的架构依赖关系查看器。 |
ShowBuiltInElementsInSchemaView |
无 |
切换在架构视图中是否显示内置数据库元素(如 sys 架构)。 |
ShowExternalElementsInSchemaView |
无 |
切换在架构视图中是否显示外部元素(如引用的数据库中的元素)。 |
DeleteObjectSchemaView |
无 |
基于当前排序,删除架构视图中的选定对象和任何显示为子级的对象。 |
SynchronizeSchemaView |
无 |
使用该解决方案中的数据库项目中的对象定义同步架构视图中的对象。 如果由于某种原因架构视图结束与对象定义的同步,则只有使用此命令。 |
ToggleSchemaViewBySchema |
无 |
切换按架构与按对象类型排序的架构视图的显示。 |
分析数据库代码
下表列出可用于配置和应用数据库代码分析规则的 DTE 命令以及您可以为各 DTE 命令指定的参数:
命令 |
Parameter |
注释 |
---|---|---|
StaticCodeAnalysisConfigure |
无 |
显示可用于配置哪些规则适用于数据库项目的属性页。 |
StaticCodeAnalysisRun |
无 |
将一组已配置的规则应用于数据库项目以确认常见的设计、命名和性能问题。 |
有关如何可以使用数据库代码分析的更多信息,请参见分析数据库代码以提高代码质量。