#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) отлично подходит для параллельных сравнений.