Сравните схемы базы данных ms-sql в Ubuntu / Linux - PullRequest
0 голосов
/ 22 февраля 2019

Есть ли какая-либо команда в ms-sql (в linux) для сравнения схем между двумя базами данных?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

У меня очень похожие потребности (в настоящее время я использую PostgreSQL в Linux), и, если это необязательно команда ms-sql, у меня есть 2 возможных решения:

Решение 1: Используйте mssql-scripter от Microsoft (https://github.com/Microsoft/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 SchemaСравнить (https://www.ticodex.com) Это хороший инструмент, который работает в Linux, Windows и Mac и может сравнивать схемы баз данных MS-SQL, MySQL и PostgreSQL. Простой в использовании и эффективный. Он может вам помочь.

Для того, чтобы использовать его:

  • Настройте исходную базу данных (указав имя сервера, имя пользователя, пароль и т. Д.)
  • Настройте целевую базу данных
  • Есть варианты, если вы хотите исключить объекты базы данных или изменитьВывод
  • Нажмите кнопку сравнения

. Вы получите различия между двумя базами данных, и, в конце концов, вы также получите сценарии миграции, чтобы сделать целевую базу данных идентичной исходной.

0 голосов
/ 22 февраля 2019

Возможно, это можно сделать косвенно через 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

  • Затем сравниваются dacpac:

    sqlpackage /a:DeployReport /sf:AdventureWorks2012_v1.dacpac /tf:AdventureWorks2012_v2.dacpac /tdn:AdventureWorks2012.db /op:AdventureWorks2012_v1.xml

Обратите внимание, что этот пример основан на версии инструмента для Windows, я предполагаю, что порт Linux имеет тот же список аргументов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...