![]() |
1
6
您可以使用此NuGet包进行部署,而无需安装SSDT https://www.nuget.org/packages/Microsoft.Data.Tools.Msbuild 我不知道它是在Ubuntu上运行还是与dotnet cli集成 |
![]() |
2
3
我的2020解决方案我想在2020年重新讨论这个问题,并对我最初的问题给出最新的答案。 我采用了不同的方法来构建部署SQL Server项目的。我目前的方法是构建一个使用vs2017-win2016代理的管道,并使用它来构建。dacpac。从那里,您构建了一个部署管道,以将dacpac(从您的工件删除)部署到SQL Server实例。 这种方法更好地适应了DevOps方法,并删除了与我以前的解决方案相关的手动过程。 您可以在此处阅读更多信息: |
|
3
2
我不知道这是否能在Ubuntu上运行,但我们最近在一台没有安装SSDT的Windows构建机器上,使用了上面提到的NuGet包,完成了这项工作。突破之处在于将以下文章中的细节拼凑在一起,特别是将SDK与MSBuild结合使用需要设置环境变量才能工作。 https://blogs.msdn.microsoft.com/ssdt/2016/08/22/part-5-use-your-own-build-and-deployment-agent/ 有了这些添加的信息,我们在解决方案文件夹的根目录中安装了NuGet包,然后在PowerShell中编写了一个构建脚本。该脚本首先设置环境变量,然后使用适当的输出目录对SqlProj文件调用MSBuild。我们并没有在那个时候专门发布,而是将工件发布到我们的工作流中的Octopus Deploy,该工作流执行实际的部署。 同样,我不确定这对Ubuntu是否有帮助,但我认为额外的细节可能有用。 |
|
4
2
另一种方法是,可以使用dotnet cli和sqlpackage实现这一点,如前所述 here 使用MSBuild Sdk。 您基本上有一个数据库项目。让我们称之为“DatabaseProject”。 您创建的新项目是。NET标准c#库,您可以将其称为“DatabaseProject.Build”。 然后可以配置DatabaseProject。建筑csproj本身:
请注意 使用的版本 V1.11.4 是支持电流的。在编辑本文时,visual studio附带了NET SDK。退房 the github repo 获取项目的最新nuget版本。 使用dotnet build将生成一个dacpac,您可以将其用于dotnet publish或 sqlpackage . 然后可以发布到SqlServer实例。 如果您像我一样在CI中使用linux runner,您可能需要SqlServer身份验证方法,然后运行
或者使用visual studio生成的配置文件:
或
|
![]() |
5
2
Azure Data Studio现在有一个扩展,允许您使用dotnet工具构建数据库项目(sqlproj)。构建项目背后的智慧在于SQL Server Tools包,该扩展从中获取所需的“BuildDirectory”DLL并以依赖关系为目标。 虽然没有文档记录,但如果您想在Azure Data Studio之外完全无头地进行设置,可以遵循他们的CLI指南, https://docs.microsoft.com/en-us/sql/azure-data-studio/extensions/sql-database-project-extension-build-from-command-line?view=sql-server-ver15 ,而是从中的RHEL版本中提取必要的文件 https://github.com/microsoft/sqltoolsservice/releases 然后按照扩展的其余文档进行操作。下面是一个工作Dockerfile,演示了该方法:
最后的注释命令显示了可以在包含数据库项目的目录中的容器内运行的内容。 然后,还可以将其与利用sqlpackage的容器相结合,以实现完整的dacpac构建和发布自动化工具集。 |
|
6
1
如上所述,在linux代理上构建DacPac文件的最简单方法是通过
MSBuild.Sdk.SqlProj
并行转到数据库项目目录。sqlproj文件创建如下目录
运行后,您将看到dacpac文件出现在
这是我的构建代理输出(Azure devops上的Ubuntu代理)
|