Присоединение к таблице через связанный сервер - PullRequest
0 голосов
/ 01 мая 2018

У меня 2 сервера с 2 разными базами данных.

S1 (сервер) с DB1 (база данных) с T1 (таблица)

и

S2 (сервер) с DB2 (база данных) с T2 (таблица)

DB1 имеет связанный сервер с S2 DB2.

Чтобы я мог выполнить запрос, например

SELECT * FROM T1 
JOIN [S2].[DB2].[T2] T2
ON T1.[ID] = T2.[ID]

И это работает правильно.

Однако, как я могу запустить его в обратном направлении

, например

SELECT * FROM T2 
JOIN [S1].[DB1].[T1] T1
ON T2.[ID] = T1.[ID]

Это ошибка с "Не удалось найти сервер [S1]. [DB1]. [T1]"

Могу ли я в любом случае присоединиться в этом направлении, не создавая связанный сервер от S2 до S1?

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Ответ Гордона более полный, но вы можете переписать свой второй запрос следующим образом:

SELECT *
FROM [S2].[DB2].[T2] T2
     JOIN T1
ON   T2.ID = T1.ID
0 голосов
/ 01 мая 2018

Этот запрос:

SELECT *
FROM T2 JOIN
     [S1].[DB1].[T1] T1
     ON T2.[ID] = T1.[ID];

Предполагается, что T2 является локальным. Вы можете сделать гибрид:

SELECT *
FROM [S2].[DB2].[T2] T2 JOIN
     [DB1].[T1] T1
     ON T2.[ID] = T1.[ID];

Можно связать сервер с самим собой, поэтому, если вы это сделаете, вы можете выполнить такой же запрос на обоих серверах:

SELECT *
FROM [S2].[DB2].[T2] T2 JOIN
     [S2].[DB1].[T1] T1
     ON T2.[ID] = T1.[ID];

Если вы пытаетесь реализовать «эквивалентные» запросы на двух серверах, то синонимы могут помочь. Возможно, вас заинтересуют ответы на этот вопрос.

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