【发布时间】:2017-10-04 14:27:34
【问题描述】:
SQL Server Data Tools (SSDT) 包含一个架构比较实用程序,可用于比较两个数据库定义。比较的源和目标可以是连接的数据库、SQL Server 数据库项目、快照或 .dacpac 文件的任意组合。比较结果显示为一组必须对目标执行的操作,以使其与源相同。比较完成后,您可以直接更新目标(如果目标是项目或数据库)或生成更新 sql 脚本。
有没有办法使用当前(2017 年)Microsoft 技术自动生成更新脚本?
注意:可以通过 .net 库或 CLI 支持自动化。
【问题讨论】:
-
使用 msbuild 将 SSDT 项目发布到脚本。您可以在 msbuild 参数中指定目标数据库,虽然我自己没有这样做,所以我无法编写它,我只知道这是一个选项。
-
Schema Compare 不会这样做(这就是 Redgate 仍在营业的原因)。你可以得到一个diff script from a DACPAC, though。
-
似乎有一个选项可以使用 sqlpackage 在一行中执行此操作,如下所示:C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin>sqlpackage /Action:Script /SourceFile:source_file.dacpac /TargetFile:target_file.dacpac" /TargetDatabaseName:MyDatabase /OutputPath:delta_script.sql
标签: c# sql-server visual-studio-2017 sql-server-data-tools