Сравнение таблиц одной базы данных с другой

#sql-server #database

#sql-сервер #База данных

Вопрос:

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

Я использую MS SQL Server, и обе таблицы находятся на одном сервере БД.

Ответ №1:

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

Ответ №2:

Вы просто хотите знать разницу в именах таблиц? Для этого вы можете использовать внешнее соединение с sys.tables .

 ;WITH A
     AS (SELECT *
         FROM   msdb.sys.tables
         WHERE  type = 'U'),
     B
     AS (SELECT *
         FROM   master.sys.tables
         WHERE  type = 'U')
SELECT COALESCE(A.name, B.name) AS Name,
       CASE
         WHEN A.name IS NULL THEN 'A'
         ELSE 'B'
       END                      AS DB
FROM   A
       FULL OUTER JOIN B
         ON A.name = B.name
WHERE  ( B.name IS NULL
          OR A.name IS NULL )
ORDER  BY DB,
          Name  
  

Комментарии:

1. Где вы указываете две базы данных для сравнения?

2. В этом примере я сравниваю таблицы в msdb и master

Ответ №3:

Я не знаю, как вы относитесь к использованию сторонней утилиты DB, но Toad for SQL Server (производства dell) отлично подходит для параллельных сравнений.

http://software.dell.com/landing/218/?gclid=CjwKEAjwyqOwBRDZuIO4p5SV8w0SJAAQoUSwC6B8BfgAQLML_8o3j9Bw1sUL01EljAjF9eXlZrY-nxoCYsjw_wcB