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

将一组已配置的规则应用于数据库项目以确认常见的设计、命名和性能问题。

有关如何可以使用数据库代码分析的更多信息,请参见分析数据库代码以提高代码质量

请参见

概念

比较和同步数据库架构

将一个或多个表中的数据与引用数据库中的数据进行比较和同步

开始团队数据库开发

创建和修改数据库和服务器对象