我们有一个包含三个数据库项目的解决方案。所有三个生产的dacpac都按顺序部署,但是由于某些原因,这些dacpac之一不运行部署后脚本。

我们正在使用sqlpackage创建差异脚本,该差异脚本正确包含了部署后语句。

IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT N'The transacted portion of the database update succeeded.'
COMMIT TRANSACTION
END
ELSE PRINT N'The transacted portion of the database update failed.'
GO
DROP TABLE #tmpErrors
GO
/*
Post-Deployment Script Template
--------------------------------------------------------------------------------------
 This file contains SQL statements that will be appended to the build script.
 Use SQLCMD syntax to include a file in the post-deployment script.
 Example:      :r .\myfile.sql
 Use SQLCMD syntax to reference a variable in the post-deployment script.
 --------------------------------------------------------------------------------------
*/
print 'SCRIPT: dbo.MEMTYPES.data.sql'

在哪里:
a)注释位于Header postdeployment.sql脚本中,该脚本使用标准语法调用其他脚本::r。\dbo.MEMTYPES.data.sql,以及
b)“print'SCRIPT:dbo.MEMTYPES.data.sql”行是在部署后脚本中定义的第一个子脚本的第一行。

但是,在运行时,部署的日志以以下行结尾:
The transacted portion of the database update succeeded.

这意味着已应用dacpac模式更改(并且已应用),但大概未尝试继续在脚本中运行运行部署后任务。

有任何想法吗?

最佳答案

在我发布问题和https://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/几个月后,我想我应该说说结果是什么...
除了删除评论已解决问题外,我找不到问题的押韵或原因。既然实际上已经将其包含在我们要遵循的规则中,此后我们就再也没有遇到过这个问题。

关于sql-server - 数据库项目未运行后期部署脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16981612/

10-14 15:02
查看更多