Попытка обновить таблицу на связанном сервере (SQL 2000/2005), но мое имя сервера не будет известно заранее. Я пытаюсь это:Полноценные имена таблиц с SP_ExecuteSql для доступа к удаленному серверу
DECLARE @Sql NVARCHAR(4000)
DECLARE @ParamDef NVARCHAR(4000)
DECLARE @SERVER_NAME VARCHAR(35)
SET @Sql = 'UPDATE
@server_name_param.dba_sandbox.dbo.SomeTable
SET SomeCol=''data'''
SET @ParamDef = N'@server_name_param VARCHAR(35)'
print @Sql
exec sp_executesql @Sql, @ParamDef, @[email protected]_NAME
Который возвращает это:
UPDATE
@server_name_param.dba_sandbox.dbo.SomeTable
SET SomeCol='data'
Msg 170, Level 15, State 1, Line 2
Line 2: Incorrect syntax near '.'.
Любые идеи? В любом случае я рассматриваю оператор SQL, который выполняется после привязки параметров?
Ваш eddit фактически отвечает на проблему moreso, чем на вопрос. Выполнение этого способа позволяет мне выполнить мой запрос, даже не используя никакой параметризации или dyanmic sql. Фантастика! – Dlongnecker
О, но неудобно в соответствии с msdn. Это требует членства в строках сервера sysadmin и setupadmin. - роли, которые мы действительно не хотим применять к пользователю приложения. – Dlongnecker