Bạn sẽ phải làm điều này, nó không thể được tham số hóa
....
SET @Sql = 'UPDATE ' + @server_name_param + '.dba_sandbox.dbo.SomeTable SET SomeCol=''data'''
....
Chỉnh sửa:Có một cách khác mà tôi đã sử dụng trong những ngày DBA thuần túy của mình
EXEC sp_setnetname 'AdhocServer', @SERVER_NAME
UPDATE AdhocServer.dba_sandbox.dbo.SomeTable SET SomeCol 'data'
EXEC sp_setnetname 'AdhocServer', 'MeaninglessValue'
sp_setnetname
có từ SQL Server 2000 đến 2008
Chỉnh sửa2. Quyền :
Hãy thử EXECUTE AS LOGIN = 'login_name'
, nơi login_name là siêu người dùng
Tôi chưa thực sự sử dụng điều này (tôi sử dụng "AS USER" để thử nghiệm), vì vậy không chắc chắn về các điểm tốt hơn ...
Chỉnh sửa 3:đối với đồng thời, hãy cân nhắc sử dụng sp_getapplock và một thủ tục được lưu trữ hoặc một số cơ chế kiểm soát đồng thời khác.