如果您在部署过程中将数据库注册为数据层应用程序,则确实可以检查安装的版本。您可以通过这样做在你的个人资料公布如下:
<RegisterDataTierApplication>True</RegisterDataTierApplication>
此选项将注册的模式和它在部署过程中msdb数据库的版本号。一定要在发布之间更改dacpac版本号!我们使用的MSBuild用于设定dacpac版本创建dacpacs,示例代码:
DacVersion=$(ProjectReleaseNumber).$(ProjectBuildNumber).$(ProjectRevisionNumber)
已经做到了这一点,你可以建立识别版本的部署前的脚本。
-- Get installed version, e.g. 2.3.12309.0
DECLARE @InstalledVersion NVARCHAR(64) = (
SELECT type_version
FROM msdb.dbo.sysdac_instances
WHERE instance_name = DB_NAME()
);
-- Get the major part of the version number, e.g. 2
DECLARE @InstalledVersionMajor TINYINT = CONVERT(TINYINT, SUBSTRING(@InstalledVersion, 0, PATINDEX('%.%', @InstalledVersion)));
IF (@InstalledVersionMajor < 5)
BEGIN;
PRINT 'Do some nontrivial incremental change that only needs to be applied on version before 5';
END;
检查您当前正在部署的版本号有点麻烦,但也可以完成。查看杰米汤姆森杰出的博客:Editing sqlcmdvariable nodes in SSDT Publish Profile files using msbuild