Ai putea incerca sa utilizezi o procedura stocata "remote".
Exemplu:
Vrei sa apelezi de pe SERVER1 o procedura stocata definita pe SERVER2.
Pe SERVER2 creezi procedura stocata:
CREATE PROCEDURE spTest
@cod INT
AS
SELECT Q.C1, Q.C2
FROM
(
SELECT 'A' AS C1, 101 AS C2
UNION
SELECT 'B', 102
UNION
SELECT 'C', 103
UNION
SELECT 'D', 104
UNION
SELECT 'E', 105
) AS Q
WHERE Q.C2 >= @cod
Pe SERVER1:
EXEC sp_addlinkedserver
@server = 'LINK_SQLSERVER_2', --denumire linked server
@srvproduct = '',
@provider = 'SQLNCLI', --furnizorul de date
@datasrc = 'server\instanta', --serverul (sau server\instanta) la care se va realiza conexiunea
@catalog = 'bd_server_2' --baza de date
--activezi optiunea RPC OUT pentru serverul "linked"
EXEC master.dbo.sp_serveroption
@server='LINK_SQLSERVER_2',
@optname='rpc out',
@optvalue='true'
--definesti contextul de conectare la SERVER2 de pe SERVER1
--daca te conectezi pe SERVER2 cu acelasi utilizator ca si pe SERVER1 (ex. folosind autentificare Windows; se poate si cu autentificare mixta WIN+SQL)
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'LINK_SQLSERVER_2',
@useself = 'TRUE',
@locallogin = 'domeniu\utilizator'
--daca te conectezi pe SERVER2 cu alt utilizator decat cel de pe SERVER1
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'LINK_SQLSERVER_2',
@useself = 'FALSE',
@locallogin = 'domeniu\utilizator',
@rmtuser = 'utilizator_server_2',
@rmtpassword = 'parola_utilizator_server_2'
Executi procedura stocata:
EXEC LINK_SQLSERVER_2.bd_server_2..spTest 104