У меня SQL Server 2014 Express с несколькими базами данных. Одна из них имеет общие таблицы с информацией, общей для остальных баз данных (назовем эту базу данных UniversalData
).
В других базах данных есть информация, относящаяся к конкретному сайту (назовем одну из этих баз данных Site01Data
). Универсальные данные могут измениться, и я не хочу регулярно их реплицировать в другие специфичные для сайта базы данных, поэтому я хочу включить таблицу UniversalData
в некоторые запросы, некоторые из которых включают CTE.
Что я пытаюсь сделать:
WITH CTE1 AS
(
SELECT *
FROM UniversalData.dbo.someTable
),
CTE2 AS
(
SELECT *
FROM Site01Data.dbo.anotherTable
),
CTE3 AS
(
SELECT CTE1.field1, CTE2.field2
FROM CTE1
JOIN CTE2 ON CTE1.idx = CTE2.idx
)
SELECT *
FROM CTE3;
Это не генерирует ошибку, но я, похоже, не получаю данных от CTE1 в моем последнем запросе (нулевой набор результатов). Интуитивно понятно, означает ли это, что он сохраняет временную таблицу в базе данных UniversalData
, которая недоступна из базы данных Site01Data
?
Как я могу использовать CTE с таблицами из разных баз данных на одном сервере?