使用Jenkins CI和SqlPackage命令错误

时间:2016-06-16 16:18:27

标签: jenkins sql-server-2012 sql-server-data-tools

我使用以下内容:

本地开发桌面
Windows 7企业版 Visual Studio 2015 Professional与更新2
适用于Visual Studio 2015的SSDT

远程数据库服务器:
Windows Server 2012
SQL Server 2012

Jenkins CI桌面服务器:
Windows 7企业版 詹金斯v1.580.1
适用于Visual Studio 2015的SSDT

我已经创建了一个SQL数据库项目。我正在尝试让Jenkins构建并将其部署到我的集成测试服务器。

构建正在运行,但部署不是。

我创建了一个执行Windows批处理命令构建步骤,其中包含以下详细信息:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130\sqlpackage.exe"
/a:publish
/sf:.\ddu.dev.cg\bin\Debug\ddu.dev.cg.dacpac
/pr:.\ddu.dev.cg\ddu.sit.publish.xml

当我运行构建时,我在控制台输出中得到以下内容:

Publishing to database 'xxxx' on server 'xxxx'.
Initializing deployment (Start)
Initializing deployment (Failed)
*** Could not deploy package.
Unable to connect to master or target server 'xxxx'. You must have a user with the same password in master or target server 'xxxx'.

我使用this文章来帮助我,但是这使用了Windows身份验证,我需要使用SQL身份验证,因为我的远程数据库服务器位于与Jenkins服务器不同的物理域中(让我们使用没有进入...)

我做了以下事情:

  1. 在Jenkins服务器上为Jenkins创建了一个Windows用户帐户,并将其分配给Jenkins服务
  2. 在我的数据库服务器上的SQL Server中为Jenkins创建了一个登录名,该密码使用与在步骤1中创建的Windows帐户相同的密码。

2 个答案:

答案 0 :(得分:1)

与TeamCity遇到同样的问题,存储的配置文件不会保留密码,只需将密码作为参数传递:/ TargetPassword:p @ ssw0rd

答案 1 :(得分:0)

我们遇到了类似的问题,发现它与不同版本的DAC服务(SqlPackage),目标数据库和Visual Studio中SSDT项目中规定的目标平台有关。

看起来您正在使用带有目标database beeing SQL Server 2012的SQL Server 2016(../130 / ..)的sqlpackage版本。

因此,您可以尝试使用/ 110 /文件夹下的dacpackage(对于SQL Server 2012),并确保您拥有正确的目标平台。 或者您可以向发布命令

添加parameter: AllowIncompatiblePlatform (/p: AllowIncompatiblePlatform=true