У нас есть решение с тремя проектами баз данных. Все три созданных dacpac развертываются последовательно, но по какой-то причине один из этих dacpac не запускает сценарий после развертывания.
Мы используем sqlpackage для создания diffscript, и diffscript действительно правильно включает операторы после развертывания .. вот фрагмент
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'
Где: а) Комментарий находится в сценарии заголовка postdeployment.sql, который вызывает другие сценарии с использованием стандартного синтаксиса:: r. \ Dbo.MEMTYPES.data.sql, и б) Строка «print» SCRIPT: dbo.MEMTYPES. data.sql '"- это первая строка первого дочернего сценария, определенного в сценарии после развертывания.
Однако при запуске журнал развертывания заканчивается строкой:
The transacted portion of the database update succeeded.
Это означает, что изменения схемы dacpac были применены (и они были), но, по-видимому, не было предпринято никаких попыток продолжить в сценарии для выполнения задач после развертывания.
Любые идеи?