Можно ли построить динамический запрос для связанного сервера (и если да, то как)?
Например:
@linkedServer varchar(50) @var1 varchar(10) @var2 varchar(10) select * from openquery(@linkedServer, 'select c1,c2 from t1 where p1 = @var1 and p2= @var2')
пример
exec ('select * from openquery(' + @linkedServer + ', ''select c1,c2 from t1 where p1 = '' + @var1 + ''and p2= '' + @var2 + ''')
обязательно прочитайте Проклятие и благословения динамического SQL для защиты от внедрения SQL
см. EXEC () на связанном сервере раздел Проклятие и благословения динамического SQL Эрланда Соммарского
из этой статьи:
Специальная функция, добавленная в SQL 2005, что вы можете использовать EXEC () для запуска сквозные запросы на связанный сервер. Это может быть другой случай SQL Server, но это также может быть Сервер Oracle, база данных Access, Активный каталог или что-то еще. SQL может быть один запрос или последовательность заявлений, и это может быть составлено динамически или быть полностью статичный. Синтаксис прост, как видно по этому примеру: EXEC ('ВЫБЕРИТЕ СЧЕТ (*) ОТ' + @db +) '.dbo.sysobjects') AT SQL2K SQL2K - это связанный сервер с было определено с помощью sp_addlinkedserver.
Специальная функция, добавленная в SQL 2005, что вы можете использовать EXEC () для запуска сквозные запросы на связанный сервер. Это может быть другой случай SQL Server, но это также может быть Сервер Oracle, база данных Access, Активный каталог или что-то еще. SQL может быть один запрос или последовательность заявлений, и это может быть составлено динамически или быть полностью статичный. Синтаксис прост, как видно по этому примеру:
EXEC ('ВЫБЕРИТЕ СЧЕТ (*) ОТ' + @db +) '.dbo.sysobjects') AT SQL2K
SQL2K - это связанный сервер с было определено с помощью sp_addlinkedserver.