TeamCity SQL部署

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TeamCity SQL部署相关的知识,希望对你有一定的参考价值。

我按照http://blogs.adatis.co.uk/jonathon%20eveoconnor/post/Using-TeamCity-to-Automate-Building-and-Deployment-of-Database-Projects的指南来设置SQL构建并从TeamCity发布。

构建步骤很有效,但在发布方面我很困难。我已经设置了如下所示的步骤,它与指南中的内容相符,但我收到了错误。

第2/2步:发布(MSBuild)(2s)

[步骤2/2] KAInternal KAInternal.sqlproj.teamcity:构建目标:发布

[KAInternal KAInternal.sqlproj.teamcity] SqlPublish

[SqlPublish] SqlPublishTask

[SqlPublishTask] C: TeamCity buildAgent work 1472f1322571ddd KAInternal bin Debug KAInternal.sqlproj.publish.sql错误Deploy72002:无法连接到主服务器或目标服务器'KAInternal'。您必须在主服务器或目标服务器“KAInternal”中拥有具有相同密码的用户。 [步骤2/2]步骤发布(MSBuild)失败

我搜索了一下,但是每个人似乎都相信这是源机器上的权限问题,我的发布配置文件使用内置的“sa”SQL Server帐户进行发布(目前主要是为了反驳这一理论) 。

这是发布配置文件XML:

<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
  <IncludeCompositeObjects>True</IncludeCompositeObjects>
  <TargetDatabaseName>KAInternal</TargetDatabaseName>
  <DeployScriptFileName>Staging_KAInternal.sql</DeployScriptFileName>
  <TargetConnectionString>Data Source=192.168.194.6;Persist Security Info=False;User ID=sa;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString>
  <BlockOnPossibleDataLoss>True</BlockOnPossibleDataLoss>
  <ExcludeLogins>True</ExcludeLogins>
  <IgnoreRoleMembership>True</IgnoreRoleMembership>
  <ExcludeUsers>True</ExcludeUsers>
  <ProfileVersionNumber>1</ProfileVersionNumber>
</PropertyGroup>

TeamCity中的发布步骤

希望有人可以指出我正确的方向,提前谢谢。

答案

您所遵循的指南描述了为部署创建单独的proj文件,但在这里您使用的是sqlproj文件。实际上有一个sqlproj文件的msbuild发布目标,所以我不确定这是否是你的故意偏差。

可能是sqlproj构建任务不接受密码作为msbuild属性的情况。您可以通过在发布配置文件文件中的连接字符串中指定密码来测试这是否是问题。

此外,我建议您确保使用最新版本的SSDT和DACFx。有关最新版本和下载链接的信息,请访问SSDT团队博客:https://blogs.msdn.microsoft.com/ssdt/

以上是关于TeamCity SQL部署的主要内容,如果未能解决你的问题,请参考以下文章

如何调试从 TeamCity 部署的我的 nuget 包?

我可以将 Redgate SQL Test 直接与 teamcity 集成以获得代码覆盖率吗

只有存在新构建时,Teamcity 每晚构建

多阶段部署的 Team City 最佳实践是啥?

使用 TeamCity 构建后如何部署?

如何使用 TeamCity 部署到环境,然后针对该环境运行测试?