Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较Ubuntu/Linux上的ms sql数据库模式_Sql_Sql Server_Linux_Schema - Fatal编程技术网

比较Ubuntu/Linux上的ms sql数据库模式

比较Ubuntu/Linux上的ms sql数据库模式,sql,sql-server,linux,schema,Sql,Sql Server,Linux,Schema,ms sql(在linux上)中是否有任何命令用于比较两个数据库之间的模式?可能可以通过 对于Linux 首先,要创建的每个数据库的dacpac: sqlpackage.exe/Action:Extract/SourceServerName:XLW-CNU415CD8B/SourceDatabaseName:AdventureWorks2012/TargetFile:AdventureWorks2012\u v1.dacpac/p:IgnoreExtendedProperties=True/p

ms sql(在linux上)中是否有任何命令用于比较两个数据库之间的模式?

可能可以通过 对于Linux

  • 首先,要创建的每个数据库的dacpac:

    sqlpackage.exe/Action:Extract/SourceServerName:XLW-CNU415CD8B/SourceDatabaseName:AdventureWorks2012/TargetFile:AdventureWorks2012\u v1.dacpac/p:IgnoreExtendedProperties=True/p:IgnorePermissions=False/p:ExtractApplicationScopedObjectsOnly=True

  • 然后,要比较的DACPAC:

    sqlpackage/a:DeployReport/sf:AdventureWorks2012\u v1.dacpac/tf:AdventureWorks2012\u v2.dacpac/tdn:AdventureWorks2012.db/op:AdventureWorks2012\u v1.xml


请注意,此示例基于该工具的windows版本,我假设Linux端口具有相同的参数列表

,可能可以通过 对于Linux

  • 首先,要创建的每个数据库的dacpac:

    sqlpackage.exe/Action:Extract/SourceServerName:XLW-CNU415CD8B/SourceDatabaseName:AdventureWorks2012/TargetFile:AdventureWorks2012\u v1.dacpac/p:IgnoreExtendedProperties=True/p:IgnorePermissions=False/p:ExtractApplicationScopedObjectsOnly=True

  • 然后,要比较的DACPAC:

    sqlpackage/a:DeployReport/sf:AdventureWorks2012\u v1.dacpac/tf:AdventureWorks2012\u v2.dacpac/tdn:AdventureWorks2012.db/op:AdventureWorks2012\u v1.xml

请注意,此示例基于该工具的windows版本,我假设Linux端口具有相同的参数列表

我有非常相似的需求(我目前在Linux上使用PostgreSQL),如果不一定是ms sql命令,我有两种可能的解决方案:

解决方案1: 使用Microsoft()提供的mssql脚本 例如,您可以通过获取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: 如果你有可能使用桌面环境(就像我正在做的),我会使用比较工具,在我看来,这是一个更加用户友好的工具

ticodexsqlschemacompare()这是一个很好的工具,可以在Linux、Windows和Mac上运行,可以比较MS-SQL、MySQL和PostgreSQL数据库的模式。易于使用和有效。这可能对你有帮助

为了使用它:

  • 配置源数据库(指定服务器名、用户名、密码等)
  • 配置目标数据库
  • 如果要排除数据库对象或更改输出,则有一些选项
  • 按下比较按钮
您将了解这两个数据库之间的差异,并最终获得迁移脚本,使目标数据库与源数据库完全相同。

我有非常相似的需求(我目前在Linux上使用PostgreSQL),如果不一定是ms sql命令,我有两种可能的解决方案:

解决方案1: 使用Microsoft()提供的mssql脚本 例如,您可以通过获取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: 如果你有可能使用桌面环境(就像我正在做的),我会使用比较工具,在我看来,这是一个更加用户友好的工具

ticodexsqlschemacompare()这是一个很好的工具,可以在Linux、Windows和Mac上运行,可以比较MS-SQL、MySQL和PostgreSQL数据库的模式。易于使用和有效。这可能对你有帮助

为了使用它:

  • 配置源数据库(指定服务器名、用户名、密码等)
  • 配置目标数据库
  • 如果要排除数据库对象或更改输出,则有一些选项
  • 按下比较按钮

您将获得两个数据库之间的差异,最终还将获得迁移脚本,使目标数据库与源数据库完全相同。

感谢链接。mssql scripter和diff为我做这项工作。我也测试了ticodex sql schema compare,发现它也创建了迁移脚本——但目前我不需要它,因为更改很容易。谢谢链接。mssql scripter和diff为我做这项工作。我还测试了ticodex sql schema compare,并看到它也创建了迁移脚本——但目前我不需要这样做,因为更改很容易。感谢您提供此解决方案。正如您所说的,它在我的机器上也可以工作,但是mssql scripter在我的DBs上比sqlpackage快得多-sqlpackage的报告比diff好,但是diff为我做了这项工作;-)谢谢你的解决方案。正如您所说的,它在我的机器上也可以工作,但是mssql scripter在我的DBs上比sqlpackage快得多-sqlpackage的报告比diff好,但是diff为我做了这项工作;-)