Windows - Távoli tárolt eljáráshívás engedélyezése MS SQL-ben

Ha tárolt eljárást szeretnénk futtatni egy távoli adatbázis szerverről, akkor a művelethez előbb csatolni kell egymáshoz a két szervert. A konfiguráció lépéseit bemutatjuk cikkünkben, és példát láthatunk a távoli eljáráshívásra.
Ahhoz, hogy távolról tudjunk tárolt eljárásokat meghívni, a következő lépéseket kell tennünk:
  • Futtassuk le az alábbi script-et az első SQL szerveren:
EXEC sp_addlinkedserver ServerName1, N'SQL Server'
EXEC sp_addlinkedserver ServerName2
EXEC sp_configure 'remote access', 1
RECONFIGURE
GO
  • Állítsuk le, és indítsuk újra az első SQL szervert.
  • Futtassuk az alábbi kódot a második szerveren. Bizonyosodjunk meg arról, hogy SQL szerver-hitelesítéssel léptünk be.
EXEC sp_addlinkedserver ServerName2, local
EXEC sp_addlinkedserver ServerName1
EXEC sp_configure 'remote access', 1
RECONFIGURE
GO
EXEC sp_addremotelogin ServerName1, sa, sa
GO
Azt feltételezzük, hogy az sa login-ok jelszava ugyanaz.
  • Állítsuk le és indítsuk újra a második szervert.
  • Az sa login segítségével most már futtathatunk tárolt eljárást a második szerveren, az első szerverről indítva.
A használt parancsok
Az sp_addlinkedserver utasítás létrehoz egy kapcsolatot, amely segítségével elosztott, heterogén lekérdezéseket tudunk OLE DB adatforrásokon futtatni.
Szintaxis:
sp_addlinkedserver [ @server = ] 'server' 
[ , [ @srvproduct = ] 'product_name' ] 
[ , [ @provider = ] 'provider_name' ] 
[ , [ @datasrc = ] 'data_source' ] 
[ , [ @location = ] 'location' ] 
[ , [ @provstr = ] 'provider_string' ] 
[ , [ @catalog = ] 'catalog' ] 
Paraméterei:
  • @server: A csatolt szerver helyi neve. Ha több SQL példány is van az adott gépen, akkor használjuk a szerver\példány formulát. A megadott név vonatkozhat az adatforrásra is.
  • @srvproduct: Az OLE DB adatforrás neve, amelyet csatolunk. Ha SQL szervert adunk meg, akkor a provider_name, data_source, location, provider_string és catalog megadása nem szükséges.
  • @provider: Egy egyedileg azonosító PROGID.
  • @datasrc: Adatforrás (szerver\példány formátumú adatforrás-név).
  • @location: Az OLE DB szolgáltató által meghatározott adatbázis helye.
  • @provstr: A szolgáltatóhoz szöveges formában megadott connection string.
  • @catalog: Az adatbázis, amelyet a kapcsolathoz használunk.
Az sp_configure parancs a szerver konfigurálására, finomhangolására használható. A RECONFIGURE utasítás szükséges a parancsok érvényesítésére. A remote access beállítás megadja, hogy használhatunk-e távoli eljáráshívást.
Példa a távoli eljáráshívásra
Ha két szerver van egy cégnél, az egyik tegyük fel, hogy tesztelési feladatokat lát el, amíg a másik szerver élesben üzemel. Ha a két szervert a fenti módon csatoljuk egymáshoz, akkor készíthetünk például olyan lekérdezéseket, amelyek során a tesztkörnyezet eljárásokat futtat az éles rendszerben, pl. valamilyen adatgyűjtést kezdeményez, és ezután a tesztszerver az új adatokat áttölti a tesztkörnyezetbe.
exec szerver2.adatbazis.felhasznalo.eljaras parameter1, parameter2