SQL Server数据工具(SSDT)包括一个Schema Compare实用程序,可用于比较两个数据库定义。比较的源和目标可以是连接数据库,SQL Server数据库项目,快照或.dacpac文件的任意组合。比较结果显示为必须与目标一起执行的一组操作,以使其与源相同。比较完成后,您可以直接更新目标(如果目标是项目或数据库)或生成更新sql脚本。
有没有办法使用当前(2017)Microsoft技术自动生成更新脚本的过程?
注意:可以通过.net库或CLI支持自动化。
答案 0 :(得分:0)
有几种方法可以做到这一点,但最简单的方法是使用@Crowcoder建议的MSBuild。 这些是我在powershell脚本中使用的代码行。
从数据库中提取dacpac (您可能不需要,但如果这样做,则需要sqlpackage。可能的位置是C:\ Program Files(x86)\ Microsoft SQL Server \ 140 \ DAC \ BIN \ SqlPackage.exe)
$cmd = "`"$sqlPackagePath`" /Action:Extract /tf:`"$dacpacPath`" /SourceConnectionString:`"$connString;Initial Catalog=$dbName;`""
生成发布脚本(可能的位置是C:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ MSBuild.exe)
$cmd = "`"$msBuildPath`" `"$sqlProjPath`" /p:Configuration=Release /t:Build /p:SqlPublishProfilePath=`"$publishConfigPath`""