Я пытаюсь обновить таблицу на нескольких удаленных серверах путем повторения списка имен серверов и выполнения некоторого динамического SQL. Смотри ниже.Невозможно использовать полное имя таблицы в динамическом SQL
DECLARE @Sql NVARCHAR(4000)
DECLARE @Server_Name VARCHAR(25)
SET @Server_Name='SomeServer'
SET @Sql='UPDATE ' + @Server_Name + '.dba_sandbox.dbo.SomeTable SET SomeCol=''data'''
PRINT @Sql
EXEC @Sql
Который производит следующий вывод:
UPDATE SomeServer.dba_sandbox.dbo.SomeTable SET SomeCol='data'
Msg 7202, Level 11, State 2, Line 7
Could not find server 'UPDATE SomeServer' in sysservers. Execute sp_addlinkedserver to add the server to sysservers.
Теперь SomeServer является связанный сервер. Если я выполняю распечатанный SQL-оператор, он отлично работает. Также обратите внимание, что в сообщении об ошибке он считает, что удаленный сервер «UPDATE SomeServer», а не «SomeServer».