SQL 数据库项目扩展

SQL 数据库项目扩展是一个 Azure Data Studio 和 Visual Studio Code 扩展,用于在基于项目的开发环境中开发 SQL 数据库。 兼容数据库包括 SQL Server、Azure SQL 数据库、Azure SQL 托管实例和 Azure Synapse SQL。 SQL 项目 SQL 对象的本地表示形式,这些对象包含了用于某一个数据库的架构(例如,表、存储过程或函数)。 生成 SQL 数据库项目时,输出项目为 .dacpac 文件。 可以通过使用 SQL 数据库项目扩展发布 SQL 数据库项目或使用命令行接口 SqlPackage 发布 .dacpac 来更新新的数据库和现有数据库以匹配 .dacpac 的内容。

包含预先部署脚本、后期部署脚本和数据库对象的 SQL 数据库项目的摘要。

扩展功能

SQL 数据库项目扩展提供以下功能:

  • 创建新的空白项目。
  • 从连接的数据库创建新项目。
  • 打开以前在 Azure Data Studio、Visual Studio CodeSQL Server Data Tools 中创建的项目。
  • 通过在项目中添加或删除对象(表、视图、存储过程)或自定义脚本来编辑项目。
  • 组织文件夹中的文件/脚本。
  • 添加对系统数据库或用户 dacpac 的引用。
  • 生成单个项目。
  • 部署单个项目。
  • 从部署配置文件加载连接详细信息(SQL Windows 身份验证)和 SQLCMD 变量。

SQL 数据库项目扩展中的以下功能当前处于预览状态:

请观看这个 10 分钟的简短视频,了解 Azure Data Studio 中的 SQL 数据库项目扩展:

安装

可在 Azure Data Studio 和 Visual Studio Code 中安装 SQL 数据库项目扩展。

Azure Data Studio

要在 Azure Data Studio 中安装 SQL 数据库项目扩展,请执行以下步骤:

  1. 打开扩展管理器以访问可用的扩展。 为此,请选择扩展图标,也可以在“视图”菜单中选择“扩展”。

  2. 通过在扩展搜索框中键入全部或部分名称来找到“SQL 数据库项目”扩展。 选择某个可用扩展以查看其详细信息。

    Azure Data Studio 安装扩展的屏幕截图。

  3. 选择所需的扩展,并选择安装它。

  4. 选择“重新加载”以启用扩展(仅在第一次安装扩展时是必需的) 。

  5. 在活动栏中选择“项目”图标。

注意

建议随 SQL 数据库项目扩展安装架构比较扩展,以获得完整功能。

Visual Studio Code

SQL 数据库项目扩展随 Visual Studio Code 的 mssql 扩展一起安装。

依赖项

SQL 数据库项目扩展依赖于 .NET Core SDK(必需)和 AutoRest.Sql(可选)。

.NET SDK

项目生成功能需要 .NET SDK,如果扩展无法检测到受支持的版本,系统将提示你安装 .NET SDK。 可以下载并安装适用于 Windows、macOS 和 Linux 的 .NET SDK。

如果要检查当前安装的 .NET SDK 版本,请打开终端并运行以下命令:

dotnet --list-sdks

安装 .NET SDK 后,你的环境已准备好使用 SQL 数据库项目扩展。

常见问题

源列表中缺少 Nuget.org 可能会导致以下错误消息:

  • error MSB4236: The SDK 'Microsoft.Build.Sql/0.1.9-preview' specified could not be found.
  • Unable to find package Microsoft.Build.Sql. No packages exist with this id in source(s): Microsoft Visual Studio Offline Packages

若要检查 nuget.org 是否注册为源,请从命令行运行 dotnet nuget list source 并查看引用 nuget.org 的 [Enabled] 项的结果。如果 nuget.org 未注册为源,请运行 dotnet nuget add source https://api.nuget.org/v3/index.json -n nuget.org

不受支持的 .NET SDK 版本可能会导致出现错误消息,例如:

  • error MSB4018: The "SqlBuildTask" task failed unexpectedly.
  • error MSB4018: System.TypeInitializationException: The type initializer for 'SqlSchemaModelStaticState' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.2.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. [c:\Users\ .sqlproj]_(其中,链接的非现有文件具有不匹配的右方括号)。

若要在安装了多个版本的情况下强制 SQL 数据库项目扩展使用 .NET SDK v6.x 版,请将 global.json 文件添加到包含 SQL 项目的文件夹。

AutoRest.Sql

从 OpenAPI 规范文件生成 SQL 项目时,SQL 数据库项目扩展会自动下载并使用 AutoRest 的 SQL 扩展。

限制

目前,SQL 数据库项目扩展具有以下限制:

  • 任务(生成/发布)不是用户定义的。
  • 不支持项目中的 SQLCLR 对象。
  • 目前不支持项目的代码分析规则。

工作区

Azure Data Studio 和 Visual Studio Code 中的 SQL 数据库项目包含在逻辑工作区中。 工作区管理“资源管理器”窗格中可见的文件夹。 默认情况下,SQL 数据库项目视图中会显示当前工作区中打开的文件夹中的所有 SQL 项目。

可通过界面中的“项目”窗格,在工作区中手动添加和删除项目。 如有需要,可在 .code-workspace 文件中手动编辑工作区的设置。

在下面的示例 .code-workspace 文件中,folders 数组列出了“资源管理器”窗格中包含的所有文件夹,settings 内的 dataworkspace.excludedProjects 数组列出了“项目”窗格中排除的所有 SQL 项目。

{
  "folders": [
    {
      "path": "."
    },
    {
      "name": "WideWorldImportersDW",
      "path": "..\\WideWorldImportersDW"
    }
  ],
  "settings": {
    "dataworkspace.excludedProjects": [
      "AdventureWorksLT.sqlproj"
    ]
  }
}