3

我有一种情况,我必须将我的数据库版本(模式)与我的所有客户端(可能不同的版本)进行比较,并部署必要的更改以使所有版本都相似。我正在寻找一种自动将我的数据库架构与我的客户架构进行比较、生成差异脚本并执行它以确保所有版本都相同的方法。

我知道 Red Gate 和类似工具,但问题是我需要从我的客户端获取架构(这很难获得)。

提前致谢。

4

1 回答 1

5

我终于为这个问题找到了一个可能的解决方案。我正在使用SqlPackage实用工具生成 dacpac,将客户端的 dacpac 与我的进行比较,创建差异脚本并部署更改。

这是命令

创建 Dacpac

sqlpackage.exe /Action:Extract /SourceServerName: DbServer /SourceDatabaseName: DbName /TargetFile:"C:\Working Folder\Client.dacpac" /p:IgnoreExtendedProperties=True /p:IgnorePermissions=False /p:ExtractApplicationScopedObjectsOnly=True /p: IgnoreUserLoginMappings=True /p:VerifyExtraction=True

比较 Dacpacs 并生成部署脚本

sqlpackage.exe/a:Script /sf:"C:\Working Folder\Primary.dacpac" /tf:"C:\Working Folder\Client.dacpac" /tdn:" DbName " /op:"C:\Working Folder \DifferenceScript.sql"

运行脚本

sqlcmd -S DbServer -i "C:\Working Folder\DifferenceScript.sql" -o "C:\Working Folder\Output.txt"

Output.txt文件包含部署的结果。所以我要做的就是运行这些命令,它会处理一切。

这是另一个有用的链接

于 2017-11-07T16:55:04.437 回答