ms-sql(在Linux上)是否有任何命令可以比较两个数据库之间的架构?
答案 0 :(得分:2)
我有非常相似的需求(我目前在Linux上使用PostgreSQL),并且如果不一定要使用ms-sql命令,我有2种可能的解决方案:
解决方案1: 使用Microsoft(https://github.com/Microsoft/mssql-scripter)的mssql-scripter 您可以通过例如
获得mssql-scripter。pip install mssql-scripter.
并执行以下命令:
$ mssql-scripter -S serverName -d databaseSource -U user > ./source.sql
$ mssql-scripter -S serverName -d databaseTarget -U user > ./target.sql
$ diff source.sql target.sql
解决方案2: 如果您有可能使用台式机环境(如我正在做的那样),则可以使用比较工具,我认为这比较方便用户使用。
TiCodeX SQL架构比较(https://www.ticodex.com)这是一个很好的工具,可以在Linux,Windows和Mac上运行,并且可以比较MS-SQL,MySQL和PostgreSQL数据库的架构。易于使用且有效。可能会对您有帮助。
要使用它:
您将获得两个数据库之间的差异,最终您还将获得迁移脚本,以使目标数据库与源数据库相同。
答案 1 :(得分:0)
也许可以通过以下方式间接完成 sqlpackage(对于Linux)。
首先,创建每个数据库的dacpac:
sqlpackage.exe /Action:Extract /SourceServerName:XLW-CNU415CD8B /SourceDatabaseName:AdventureWorks2012 /TargetFile:AdventureWorks2012_v1.dacpac /p:IgnoreExtendedProperties=True /p:IgnorePermissions=False /p:ExtractApplicationScopedObjectsOnly=True
然后,将要比较的dacpacs:
sqlpackage /a:DeployReport /sf:AdventureWorks2012_v1.dacpac /tf:AdventureWorks2012_v2.dacpac /tdn:AdventureWorks2012.db /op:AdventureWorks2012_v1.xml
请注意,此示例基于Windows版本的工具,我假设Linux端口具有相同的参数列表