Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Nomi di tabelle completi con SP_ExecuteSql per accedere al server remoto

Dovrai farlo, non può essere parametrizzato

....
SET @Sql = 'UPDATE ' + @server_name_param + '.dba_sandbox.dbo.SomeTable SET SomeCol=''data'''
....

Modifica:c'è un altro modo che ho usato ai miei giorni DBA puri

EXEC sp_setnetname 'AdhocServer', @SERVER_NAME
UPDATE AdhocServer.dba_sandbox.dbo.SomeTable SET SomeCol 'data'
EXEC sp_setnetname 'AdhocServer', 'MeaninglessValue'

sp_setnetname esiste da SQL Server 2000 a 2008

Modifica2. Autorizzazioni :

Prova EXECUTE AS LOGIN = 'login_name' , dove login_name è un superutente

Non l'ho usato davvero (uso "AS USER" per i test), quindi non sono sicuro dei punti più fini...

Modifica 3:per la concorrenza, considera l'utilizzo di sp_getapplock e una stored procedure o qualche altro meccanismo di controllo della concorrenza.