通过


教程:从现有数据库开始

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 数据库

SQL 项目包含数据库中所有对象的声明性(CREATE 语句)文件,例如表、视图和存储过程。 可以使用这些文件创建新数据库、更新现有数据库或跟踪源代码管理中的数据库。 通常,在拥有现有数据库并且想要在 SQL 项目中创建对象,以最少工作量与数据库匹配时,先从 SQL 项目开始。

某些 SQL 项目工具包括从现有数据库创建新 SQL 项目的单个步骤。 其他工具需要几个步骤来创建新的 SQL 项目,然后从现有数据库中导入对象。 除了Visual Studio(SQL Server Data Tools)说明外,本指南重点介绍 SDK 样式的 SQL 项目。

使用本教程中的选项 1,你可以:

  • 步骤 1: 从现有数据库创建新的 SQL 项目
  • 步骤 2: 生成 SQL 项目

使用本教程中的选项 2,你可以:

  • 步骤 1: 创建新的空 SQL 项目
  • 步骤 2: 从现有数据库导入对象
  • 步骤 3: 生成 SQL 项目

Prerequisites

# install SqlPackage CLI
dotnet tool install -g Microsoft.SqlPackage

# install Microsoft.Build.Sql.Templates
dotnet new install Microsoft.Build.Sql.Templates

Note

若要完成本教程,需要访问Azure SQL或SQL Server实例。 可以在 Windows 或 容器中本地免费开发 SQL Server Developer Edition

选项 1:从现有数据库中创建新的 SQL 项目

步骤 1:从现有数据库中创建新的 SQL 项目

在 Visual Studio 中的 SQL Server 对象资源管理器 中,右键单击要从中创建project的数据库,然后选择 新建Project...

Visual Studio 中“导入数据库”对话框的屏幕截图。

在“”新建Project对话框中,输入project名称。 项目名称不需要与数据库名称匹配。 根据需要验证和修改项目位置。 默认导入设置先按架构,然后按对象类型将对象导入文件夹。 可以修改导入设置以更改文件夹结构,或将权限包含在要导入的对象中。 开始导入。

导入数据库 ”对话框将导入进度显示为消息。 导入完成后,可以在 解决方案资源管理器 中看到导入的对象。 该过程将日志存储在项目目录下的一个文件中Import Schema Logs。 选择完成

选项 1 不适用于Visual Studio中的 SDK 样式 SQL 项目。 请改用选项 2

在Visual Studio Code的数据库对象资源管理器视图中,选择要从中创建项目的数据库。 右键单击数据库,然后从 Database 中选择创建Project

“从数据库创建项目”对话框的截图在Visual Studio Code中。

在Visual Studio Code中,从数据库创建项目对话框需要项目名称和位置。 默认导入设置先按架构,然后按对象类型将对象导入文件夹。 可以选择不同的文件夹结构,或选择在选择 “创建”之前在导入的对象中包含权限。

打开“数据库项目”视图以查看新项目和导入的对象定义。

选项 1 不适用于SQL Server Management Studio。 请改用选项 2

选项 1 不适用于命令行。 请改用选项 2

步骤 2:生成 SQL 项目

生成过程针对项目文件中指定的目标平台验证对象与语法之间的关系。 生成过程的项目输出是一个 .dacpac 文件,可用于将项目部署到目标数据库。 此文件包含数据库架构的已编译模型。

解决方案资源管理器 中,右键单击项目节点,然后选择 Build

输出窗口会自动打开以显示生成过程。 如果出现错误或警告,输出窗口将显示它们。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin\Debug\projectname.dacpac)。

选项 1 不适用于Visual Studio中的 SDK 样式 SQL 项目。 请改用选项 2

在 Visual Studio Code 的 Database Projects 视图中,右键单击项目节点并选择 Build

输出窗口会自动打开以显示生成过程。 如果出现错误或警告,输出窗口将显示它们。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin/Debug/projectname.dacpac)。

选项 1 不适用于SQL Server Management Studio。 请改用选项 2

选项 1 不适用于命令行。 请改用选项 2

选项 2:创建新的空 SQL 项目并从现有数据库中导入对象

或者,可以分隔项目创建和对象导入步骤。

步骤 1:创建新的空 SQL 项目

在将对象导入到项目之前,先创建新的 SQL 数据库项目来启动项目。

选择 FileNew,然后选择Project

在“”新建Project对话框中,在搜索框中使用术语“SQL Server。 最高结果为 SQL Server Database Project

“新建项目”对话框屏幕截图。

选择下一步以继续执行下一步。 输入项目名称,无需与数据库名称匹配。 根据需要验证和修改项目位置。

选择“创建”来创建项目。 空项目随即打开,在 解决方案资源管理器 中可见,并可进行编辑。

选择 FileNew,然后选择Project

在“”新建Project对话框中,在搜索框中使用术语“SQL Server。 最优结果是 SQL Server 数据库项目,SDK 风格(预览)

“新建项目”对话框屏幕截图。

选择下一步以继续执行下一步。 输入项目名称,无需与数据库名称匹配。 根据需要验证和修改项目位置。

选择“创建”来创建项目。 空项目打开后,在 解决方案资源管理器 中可见,可在其中进行编辑。

在Visual Studio Code的 Database Projects 视图中,选择“新建Project”按钮。

新的 Viewlet 的屏幕截图。

第一个提示确定要使用的项目模板,主要基于目标平台是SQL Server还是Azure SQL。 如果系统提示选择特定版本的 SQL,请选择与目标数据库匹配的版本。 如果不知道目标数据库版本,请选择最新版本,因为稍后可以修改该值。

在出现的文本输入中输入项目名称,该名称无需与数据库名称匹配。

在显示的 “选择文件夹 ”对话框中,选择要驻留的项目文件夹、 .sqlproj 文件和其他内容的目录。

当系统提示是否创建 SDK 样式项目时,请选择“ ”。

完成后,空项目将打开,并在 “数据库项目” 视图中可见以供编辑。

选择 FileNew,然后选择Project

在“”新建Project对话框中,选择SQL 数据库Project

“新建项目”对话框屏幕截图。

选择下一步以继续执行下一步。 输入项目名称,无需与数据库名称匹配。 根据需要验证和修改项目位置。

选择“创建”来创建项目。 空项目将会打开,并在 解决方案资源管理器 中可见,可以进行编辑。

安装 Microsoft.Build.Sql 项目的 .NET 模板后,您可以通过命令行创建一个新的 SQL 数据库项目。 -n 选项指定项目的名称,-tp 选项指定项目目标平台。

使用选项 -h 查看所有可用选项。

# create a new SQL database project
dotnet new sqlproj -n MyDatabaseProject

步骤 2:从现有数据库中导入对象

解决方案资源管理器 中,右键单击项目节点并选择 Import -> 数据库...。如果此选项处于禁用状态,则数据库项目可能在其中创建了对象。 可以删除对象或创建新项目。

在“导入数据库”对话框中,选择要从中导入对象的数据库的连接。 如果连接到 SQL Server 对象资源管理器 中的数据库,它将显示在 history 列表中。

Visual Studio 中“导入数据库”对话框的屏幕截图。

默认导入设置先按架构,然后按对象类型将对象导入文件夹。 可以修改导入设置以更改文件夹结构,或将权限包含在要导入的对象中。 开始导入。

导入继续时,进度会显示为“导入数据库”对话框中的消息。 导入完成后,导入的对象将显示在 解决方案资源管理器 中,日志存储在 Import Schema Logs 下的项目目录中的文件中。 选择“完成”以返回到该项目。

使用 SqlPackage CLI 将对象从现有数据库导入到步骤 1 Visual Studio中创建的新 SQL 数据库项目。 以下 SqlPackage 命令将数据库的架构导入按嵌套架构和对象类型文件夹组织的 MyDatabaseProject 文件夹中。

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

将这些文件夹放置在 SDK 样式的 SQL 数据库项目文件夹中时,它们会自动包含在项目中,而无需导入或修改 SQL 项目文件。

在 Visual Studio Code 中的 SQL 数据库项目扩展中,打开 Database Projects 视图。 右键单击项目节点,然后选择“从数据库中更新项目”

Visual Studio Code 中的“更新数据库”对话框的截图

在“更新数据库”对话框中,选择要从中导入对象的数据库的连接。 如果在 “连接” 视图中连接到数据库,则会显示在 历史记录 列表中。

选择“查看架构比较中的更改”以查看并选择要导入的对象子集,或选择“应用所有更改”以导入所有对象。

解决方案资源管理器 中,右键单击项目节点,然后选择从数据库导入...

在“导入数据库”对话框中,选择要从中导入对象的数据库的连接。

SSMS 中“导入数据库”对话框的屏幕截图。

默认导入设置将数据库中的所有对象导入项目,并按架构和对象类型在文件夹中排列这些对象,但如果覆盖项目中的任何对象,则取消导入。 可以通过选择覆盖项目中的现有对象来修改导入,以使用数据库中的对象更新项目。 选择 “导入 ”以开始导入。

导入完成后,解决方案资源管理器使用导入的对象进行更新。

使用 SqlPackage CLI 将现有数据库的架构提取到 .dacpac 文件或单个 .sql 文件中。 以下 SqlPackage 命令将数据库的架构提取到由嵌套架构和对象类型文件夹分组织的 .sql 文件中。

sqlpackage /a:Extract /ssn:localhost /sdn:MyDatabase /tf:MyDatabaseProject /p:ExtractTarget=SchemaObjectType

将这些文件夹放置在 SDK 样式的 SQL 数据库项目文件夹中时,它们会自动包含在项目中,而无需导入或修改 SQL 项目文件。

步骤 3:生成 SQL 项目

生成过程针对项目文件中指定的目标平台验证对象与语法之间的关系。 生成过程的项目输出是一个 .dacpac 文件,可用于将项目部署到目标数据库。 此文件包含数据库架构的已编译模型。

解决方案资源管理器 中,右键单击项目节点,然后选择 Build

输出窗口会自动打开以显示生成过程。 如果出现错误或警告,输出窗口将显示它们。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin\Debug\projectname.dacpac)。

解决方案资源管理器 中,右键单击项目节点,然后选择 Build

输出窗口会自动打开以显示生成过程。 如果出现错误或警告,输出窗口将显示它们。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin\Debug\projectname.dacpac)。

在 Visual Studio Code 的 Database Projects 视图中,右键单击项目节点并选择 Build

输出窗口会自动打开以显示生成过程。 如果出现错误或警告,输出窗口将显示它们。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin/Debug/projectname.dacpac)。

解决方案资源管理器 中,右键单击项目节点,然后选择 Build

SQL Server Management Studio 中 解决方案资源管理器 的截图,并显示可用的生成选项。

输出窗口会自动打开以显示生成过程。 如果出现错误或警告,输出窗口将显示它们。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin\Debug\projectname.dacpac)。

可以使用命令从命令行 dotnet build 生成 SQL 数据库项目。

dotnet build

# optionally specify the project file
dotnet build MyDatabaseProject.sqlproj

生成输出包括任何错误或警告,以及发生错误或警告的特定文件和行号。 成功生成后,将创建生成项目(.dacpac 文件),其位置包含在生成输出中(默认值为 bin/Debug/projectname.dacpac)。