SQL: Linked server (fjärrserver)

2 posts / 0 new
Last post
benzzon
benzzon's picture
SQL: Linked server (fjärrserver)

Kod för att möjliggöra proceduranrop mot fjärrserver:
 
--*** Visa registrerade fjärrservrar..
sp_helplinkedsrvlogin

--*** Registrera ett serveralias..
sp_addlinkedserver '@serveralias@', @srvproduct = N'', @provider = N'SQLOLEDB', @datasrc = N'@servername_ip'


--*** Aktivera "remote procedure call" för serveralias..
exec sp_serveroption '@serveralias@', 'rpc out', 'true'


--*** Registrera ett default användarkonto för anrop mot fjärrservern..
EXEC sp_addlinkedsrvlogin '@serveralias@', 'false', NULL, '@user@', '@password@'


--*** Ta bort default användarkonto för angiven fjärrserver..
-- sp_addlinkedsrvlogin '@serveralias@', 'true'
--  ELLER?
-- sp_droplinkedsrvlogin 'BSFMASQL1',null


--*** Radera tidigare registrerad fjärrserver..
-- sp_dropserver '@serveralias@'

  --------------------------------------------------------------------------------

-- Felmeddelande som fås när MS DTC tjänsten ej är startad på fjärrservern som anropas
-- (Felet fås när en "insert" görs på urvalet från en procedur på fjärrservern.)

Server: Msg 8501, Level 16, State 1, Line 1
MSDTC on server 'XPCOMPUTER' is unavailable.
Server: Msg 7391, Level 16, State 1, Line 1
The operation could not be performed because the OLE DB provider 'SQLOLEDB' was unable to begin a distributed transaction.
OLE DB error trace [OLE/DB Provider 'SQLOLEDB' ITransactionJoin::JoinTransaction returned 0x8004d01c].

 

benzzon
benzzon's picture
Den user som utför server

Den user som utför server-länkningarna behöver ha behörigheter enligt nedan:

GRANT ALTER ANY LINKED SERVER TO <nameofuser> -- Needed for "sp_addlinkedserver"
GRANT ALTER ANY LOGIN TO <nameofuser> -- Needed for "sp_addlinkedsrvlogin"