VSTS:部署Azure SQL DACPAC版本管理会抛出错误

时间:2016-07-06 12:30:03

标签: azure-sql-database azure-devops ms-release-management azure-pipelines-release-pipeline

我正在尝试为Azure SQL数据库设置VSTS版本管理。我正在使用“部署Azure SQL DACPAC”任务。 dacpac文件的路径设置为

$(System.DefaultWorkingDirectory)\**\*.dacpac

当数据库正确更新时,我最终会收到错误,导致任务失败。

"System.Management.Automation.ParentContainsErrorRecordException: *** Could not deploy package"

看起来所有更新都应用于数据库,但任务仍然会引发错误。记录下面

2016-07-07T07:50:44.6118522Z Publishing to database 'mydb' on server 'myserver.database.windows.net'.
2016-07-07T07:50:45.7587428Z Initializing deployment (Start)
2016-07-07T07:50:52.5825349Z Initializing deployment (Complete)
2016-07-07T07:50:52.5835341Z Analyzing deployment plan (Start)
2016-07-07T07:50:52.7085342Z Analyzing deployment plan (Complete)
2016-07-07T07:50:52.7085342Z Updating database (Start)
2016-07-07T07:50:53.7000358Z Altering [dbo].[usp_Products_List]...
2016-07-07T07:50:53.7170379Z Creating [dbo].[usp_Products_GetById]...
2016-07-07T07:50:53.8745919Z An error occurred while the batch was being executed.
2016-07-07T07:50:53.8855912Z Updating database (Failed)
2016-07-07T07:50:53.9105905Z ##[debug]System.Management.Automation.RemoteException: *** Could not deploy package.
2016-07-07T07:50:53.9225921Z ##[debug][Azure RDFE Call] Deleting firewall rule 260745ad-327c-45ae-bcb8-5c6bb0e43797 on azure database server: myserver
2016-07-07T07:50:55.9753040Z ##[debug][Azure RDFE Call] Firewall rule 260745ad-327c-45ae-bcb8-5c6bb0e43797 deleted on azure database server: myserver
2016-07-07T07:50:55.9934761Z ##[error]System.Management.Automation.ParentContainsErrorRecordException: *** Could not deploy package.

存储过程代码

CREATE PROCEDURE [dbo].[usp_Products_GetById]
    @pId int
AS
    SET NOCOUNT ON;

SELECT [id]
      ,[description]
      ,[created_dt]
      ,[last_mod_dt]
      ,[active]
  FROM [dbo].[Products]
  WHERE [id] = @pId
GO

3 个答案:

答案 0 :(得分:1)

这通常是由"目标平台"您的SQL项目与您正在部署的SQL Server版本不匹配。请检查"目标平台"您的SQL项目与Azure SQL数据库版本匹配: enter image description here

答案 1 :(得分:0)

我尝试手动设置防火墙规则并仅使用服务器名称而不是FQDN。然后我再次尝试了FQDN并且它有效。所以不确定为什么会失败。

答案 2 :(得分:0)

在我的特定情况下,发生此错误是因为在我的数据库项目中,在表的一个init脚本中,我试图为非数字列设置标识规范。

因此,如果其他解决方案不起作用,请检查所有脚本是否正常运行(使用SQL Management Studio或Visual Studio)。

太糟糕了,VSTS中的错误没有捕获SQL错误......