1

我正在尝试为我的Azure SQL数据库安装VSTS发布管理。我正在使用“部署Azure SQL DACPAC”任务。 dacpac文件的路径设置为VSTS:部署Azure SQL 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 

回答

0

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

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

太糟糕了,VSTS中的错误不能捕获SQL错误...

+0

将其更改为接受的答案。就像我在回答中所说的,我首先使用了FQDN。但脚本错误可能是第一种情况下启动错误的原因。 – BeesNees

1

这通常是因为你的SQL项目不符合您正在部署SQL Server版本的“目标平台”引起的。请检查您的SQL项目的“目标平台” Azure的SQL数据库版本一致: enter image description here

+0

版本在SQL项目和Azure SQL中均正确设置。 – BeesNees

+0

@BipinDas你可以在你的发布定义中添加一个名为“system.debug”的变量,并将该值设置为“true”,然后启动发布并共享日志? –

+0

向问题添加错误日志。 – BeesNees

0

我试图手动设置防火墙规则,只使用服务器名称,而不是FQDN。然后我再次尝试了FQDN并且它工作正常。所以不知道为什么它失败。

相关问题