Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Mashtar
Member

Откуда:
Сообщений: 40
Доброго дня всем.
Подскажите, можно как-то выполнить exec (..., ..., ...) AT [LinkedServer] для текущего сервера?
ЦЕЛЬ: получить данные с разных серверов, при этом использовать минимум строк запроса. В идеале @SqlString сделать единым для запроса на текущем сервере и Linked к нему.

DECLARE @SqlString VARCHAR(MAX)
		,@i INT = 1 
		,@b DATETIME = '20131212'

SET @SqlString = 
N'
SELECT ?,?
'
EXEC (@SqlString,@i OUT,@b OUT) AT [LinkedServer]


То есть, такой запрос завершается ошибкой:

DECLARE @SqlString VARCHAR(MAX)
		,@i INT = 1 
		,@b DATETIME = '20131212'

SET @SqlString = 
N'
SELECT ?,?
'
EXEC (@SqlString,@i OUT,@b OUT)


Спасибо.
12 дек 13, 12:31    [15281797]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mashtar
Подскажите, можно как-то выполнить exec (..., ..., ...) AT [LinkedServer] для текущего сервера?

Создать linked server к самому себе
12 дек 13, 12:46    [15281923]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Mashtar
Member

Откуда:
Сообщений: 40
Glory, понятно.
Стало быть и openquery для текущего сервера выполнить нельзя.
Может быть, можно написать динамический запрос с использованием sp_executesql для текущего и Linked серверов?
12 дек 13, 12:49    [15281943]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mashtar
Стало быть и openquery для текущего сервера выполнить нельзя.

Из чего следует это "стало быть" ?
12 дек 13, 12:54    [15281981]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Mashtar
Member

Откуда:
Сообщений: 40
Glory, прошу прощения, действительно работает.
DECLARE @SqlString VARCHAR(MAX)
		,@i INT
		,@b INT

SET @SqlString = 
'
Select 1,2
'

SET @SqlString = 'SELECT * FROM OPENQUERY([ServerName],'''+@SqlString+''')'

EXEC (@SqlString)


Можно ли присвоить результат Select'a выше переменным @i и @b, используя при этом openquery для получения данных с другого сервера?
12 дек 13, 13:16    [15282150]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Glory
Member

Откуда:
Сообщений: 104751
FAQ
12 дек 13, 13:20    [15282175]     Ответить | Цитировать Сообщить модератору
 Re: Динамический запрос. Linked server. Exec (..., ..., ...) AT  [new]
Mashtar
Member

Откуда:
Сообщений: 40
Glory, да, спасибо, нашел решение. Именно его и читал в данный момент. Еще раз спасибо.
12 дек 13, 13:21    [15282187]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить