2016-08-11 2 views
2

Таким образом, я получил этот запрос, я пытаюсь работать в режиме SQLCMD в SSMS:SSMS - Запрос нескольких серверов в одном запросе

:CONNECT SERVER1 
    select * 
    from [SERVER1].DB1.dbo.Project 
    where id not in 
    (
     :CONNECT [SERVER2] 
     select distinct id from [SERVER2].DB2.dbo.Project 
); 

однако получаю эту ошибку, не уверен, что я делать неправильно. Любая помощь будет оценена по достоинству. Благодаря!

Неустранимая ошибка сценария. Не удается открыть соединение, указанное в сценарии SQLCMD .

ответ

3

Это недопустимо для запросов SQLCMD, вы не сможете делать то, что вы пытаетесь сделать таким образом.

Подключитесь к связанным серверам через их 4-разрядное именование, как у вас. Извлеките из него контрольный язык. Здесь нет необходимости в SQLCMD.

select * 
    from [SERVER1].DB1.dbo.Project 
    where id not in 
    (
     select distinct id from [SERVER2].DB2.dbo.Project 
); 
+0

Я ранее пробовал это, но получал ошибку «Недопустимое имя объекта» на объекте select query, в зависимости от того, к какой db он был подключен. Например, если бы я открыл новое окно запроса на Server1.db1, я бы получил недопустимое имя объекта Server2.db2 .., если бы я открыл новое окно запроса из Server2.db2, тогда он дал бы «Недопустимое имя объекта» для Serer1.db1. Я также попытался использовать мастер наверху, но это не повлияло. – User123

+0

У вас установлены связанные серверы как имя Server1 и Server2? –

+0

Не знаю. Есть ли другой способ сделать это? Поскольку я получаю сообщение о том, что у меня нет разрешения на выполнение действия (sp_addlinkedserver) на мой localdb – User123

Смежные вопросы