У нас есть данные, которые были случайно объединены на нашей производственной площадке, но у нас все еще есть данные, разделенные на нашей тестовой площадке / базе данных. Я хотел бы иметь возможность запрашивать данные клиентов из обеих баз данных для сравнения на основе уникального идентификатора клиента. Что я хотел бы видеть в результатах запроса, так это таблицы схем, столбцы и первичные ключи uniqueidentifier таблиц, в которых у таблицы есть соответствующий внешний столбец, содержащий ключ клиента.
Например, если у клиента есть счет-фактура, клиент cst_key будет находиться в inv_cst_key ac_invoice. Мне нужен первичный ключ этой таблицы, который будет взят из столбца inv_key этой строки. Таким образом, если бы у клиента было два счета-фактуры, два списка inv_key были бы перечислены как отдельные строки.
Я установил ApexSQL Search для поиска в столбцах уникального идентификатора базы данных для ключа клиента, и он предоставил таблицу и внешние столбцы, где существовал cst_key клиента (например, inv_cst_key), но мне все еще нужен первичный ключ (например, inv_key) этого строка таблицы, в которой находится ключ клиента. Я пытался использовать эти результаты поиска для создания чего-то с помощью Excel (перемещения по таблицам, операторам, столбцам и т. Д.) И копирования / вставки этого в SSMS, но запрос извлекает миллионы результатов в процессе его настройки ...
DECLARE @cstkey uniqueidentifier
SET @cstkey = 'xxxxxxxxxxxxxxxxxx'
SELECT cst_key,
inv_key,
-- many more columns
FROM co_customer
LEFT JOIN ac_invoice ON cst_key = inv_cst_key
-- more LEFT JOINS
WHERE cst_key = @cstkey
Кроме того, я знаю, как запрашивать данные из 2 баз данных, но я не знаю, как делать запросы, чтобы видеть имена таблиц и столбцов в строке рядом с данными столбца.
DECLARE @cstkey uniqueidentifier
SET @cstkey = 'xxxxxxxxxxxxxxxxxx'
SELECT cst1.cst_key AS cst_key_1, inv1.inv_key AS inv_key_1,
cst2.cst_key AS cst_key_2, inv2.inv_key AS inv_key_2
FROM db1name.dbo.co_customer cst1
LEFT JOIN db1name.dbo.ac_invoice inv1 (NOLOCK) ON inv1.inv_cst_key = cst1.cst_key
INNER JOIN db2name.dbo.co_customer cst2 (NOLOCK) ON cst1.cst_key = cst2.cst_key
INNER JOIN db2name.dbo.ac_invoice inv2 (NOLOCK) ON inv2.inv_cst_key = cst2.cst_key
WHERE cst1.cst_key = @cstkey
AND cst2.cst_key = @cstkey
Я бы хотел, чтобы результаты выглядели примерно так ...
DB1 | T1 | PC1 | PC1 Data Key | FC1 | FC1 Data Key || DB2 | T2 | ...
--------------------------------------------------------------------
DB = База данных, T = Таблица, ПК = Основной столбец, FC = Внешний столбец
Кстати, ключом данных FC1 также будет cst_key, как упомянуто выше.
Заранее благодарим за любую помощь.