Har*_*dra 3 sql sql-server ssms sqlcompare sqlpackage
我有一种情况,我必须将我的数据库版本(架构)与我的所有客户端(可能是不同的版本)进行比较,并部署必要的更改以使所有版本都相同。我正在寻找一种方法,可以自动将我的数据库架构与我的客户端架构进行比较,生成差异脚本并执行它以确保所有版本都相同。
我知道 Red Gate 和类似的工具,但问题是我需要从我的客户端获取模式(这很难获得)。
提前致谢。
我终于得到了这个问题的可能解决方案。我正在使用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文件包含部署的结果。所以我所要做的就是运行这些命令,它会处理一切。
这是另一个有用的链接。
| 归档时间: |
|
| 查看次数: |
1746 次 |
| 最近记录: |