Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Noms de table complets avec SP_ExecuteSql pour accéder au serveur distant

Il faudra le faire, ce n'est pas paramétrable

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

Edit :Il existe un autre moyen que j'ai utilisé à l'époque de mon pur DBA

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

sp_setnetname existe-t-il de SQL Server 2000 à 2008

Modifier2. Autorisations :

Essayez EXECUTE AS LOGIN = 'login_name' , où login_name est un superutilisateur

Je ne l'ai pas vraiment utilisé (j'utilise "AS USER" pour les tests), donc je ne suis pas sûr des points les plus fins...

Édition 3 :pour la concurrence, envisagez d'utiliser sp_getapplock et une procédure stockée, ou un autre mécanisme de contrôle de la concurrence.