使用Microsoft技术(SSDT)自动化数据库架构比较

时间:2017-10-04 14:27:35

标签: c# sql-server visual-studio-2017 sql-server-data-tools

SQL Server数据工具(SSDT)包括一个Schema Compare实用程序,可用于比较两个数据库定义。比较的源和目标可以是连接数据库,SQL Server数据库项目,快照或.dacpac文件的任意组合。比较结果显示为必须与目标一起执行的一组操作,以使其与源相同。比较完成后,您可以直接更新目标(如果目标是项目或数据库)或生成更新sql脚本

有没有办法使用当前(2017)Microsoft技术自动生成更新脚本的过程?

注意:可以通过.net库或CLI支持自动化。

1 个答案:

答案 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`""