【发布时间】:2019-07-16 09:55:13
【问题描述】:
ms-sql(在 linux 上)中是否有任何命令可以比较两个数据库之间的架构?
【问题讨论】:
标签: sql sql-server linux schema
ms-sql(在 linux 上)中是否有任何命令可以比较两个数据库之间的架构?
【问题讨论】:
标签: sql sql-server linux schema
也许可以通过间接方式完成 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 端口具有相同的参数列表
【讨论】:
我有非常相似的需求(我目前在 Linux 上使用 PostgreSQL),如果不一定是 ms-sql 命令,我有两种可能的解决方案:
解决方案 1: 使用 Microsoft 的 mssql-scripter (https://github.com/Microsoft/mssql-scripter) 您可以通过例如
获取 mssql-scripterpip 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 Schema Compare (https://www.ticodex.com) 这是一个很好的工具,可以在 Linux、Windows 和 Mac 上运行,可以比较 MS-SQL、MySQL 和 PostgreSQL 数据库的模式。易于使用且有效。它可能会帮助你。
为了使用它:
您将获得两个数据库之间的差异,最终您还将获得迁移脚本以使目标数据库与源数据库相同。
【讨论】: