数据库项目未运行部署后脚本

问题描述 投票:0回答:3

我们有一个包含三个数据库项目的解决方案。所有三个生成的 dacpac 均按顺序部署,但由于某种原因,其中一个 dacpac 不运行部署后脚本。

我们使用 sqlpackage 创建 diff 脚本,并且 diff 脚本确实正确地包含了部署后语句..这是一个片段

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) 注释位于标头 postdeployment.sql 脚本中,该脚本使用标准语法 : :r .\dbo.MEMTYPES.data.sql 调用其他脚本,并且 b) “ print 'SCRIPT: dbo.MEMTYPES.data.sql'” 行是部署后脚本中定义的第一个子脚本的第一行。

但是,运行时,部署日志以以下行结尾:

The transacted portion of the database update succeeded.

这意味着 dacpac 架构更改已应用(并且确实如此),但可能没有尝试在脚本中继续运行部署后任务。

有什么想法吗?

sql-server visual-studio-2012 database-project sql-server-data-tools
3个回答
6
投票

因为这是我发布问题几个月后,https://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/我猜我应该说明结果是什么...

除了删除评论解决了问题之外,我找不到该问题的韵律或原因。现在这实际上已包含在我们要遵循的规则中,此后我们就再也没有遇到过这个问题。


4
投票

正如上面 user3683706 提到的,部署后脚本的 Build Action 必须是 PostDeploy (如下面所选文件所示)。并且部署后脚本只能有一个。

如果您想要多个脚本怎么办?您可以像这样在一个脚本中引用它们

:r .\Post-Deployment_Scripts\Events.sql

enter image description here

如有任何问题请告诉我!非常感谢点赞!


0
投票

有相同的设置但不起作用

© www.soinside.com 2019 - 2024. All rights reserved.