Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Nomes de tabela totalmente qualificados com SP_ExecuteSql para acessar o servidor remoto


Você terá que fazer isso, não pode ser parametrizado
....
SET @Sql = 'UPDATE ' + @server_name_param + '.dba_sandbox.dbo.SomeTable SET SomeCol=''data'''
....

Edit:Existe outra maneira que eu usei nos meus dias de DBA puro
EXEC sp_setnetname 'AdhocServer', @SERVER_NAME
UPDATE AdhocServer.dba_sandbox.dbo.SomeTable SET SomeCol 'data'
EXEC sp_setnetname 'AdhocServer', 'MeaninglessValue'

sp_setnetname existe do SQL Server 2000 a 2008

Editar2. Permissões :

Tente EXECUTE AS LOGIN ='login_name' , onde login_name é um superusuário

Eu realmente não usei isso (eu uso "AS USER" para testes), então não tenho certeza dos pontos mais sutis ...

Edição 3:para simultaneidade, considere usar sp_getapplock e um procedimento armazenado ou algum outro mecanismo de controle de simultaneidade.