Skapa länkade servrar (SQL Server Database Engine)
gäller för:SQL Server
Azure SQL Managed Instance
Den här artikeln visar hur du skapar en länkad server och kommer åt data från en annan SQL Server, en Azure SQL Managed Instance eller en annan datakälla med hjälp av SQL Server Management Studio (SSMS) eller Transact-SQL. Länkade servrar gör det möjligt för SQL Server-databasmotorn och Azure SQL Managed Instance att läsa data från fjärrdatakällorna och köra kommandon mot fjärrdatabasservrarna (till exempel OLE DB-datakällor) utanför SQL Server-instansen.
Bakgrund
Länkade servrar är vanligtvis konfigurerade för att göra det möjligt för databasmotorn att köra en Transact-SQL-instruktion som innehåller tabeller i en annan instans av SQL Server eller någon annan databasprodukt som Oracle. Många typer av datakällor kan konfigureras som länkade servrar, inklusive databasprovidrar från tredje part och Azure Cosmos DB.
När en länkad server har skapats kan distribuerade frågor köras mot den här servern och frågor kan koppla tabeller från mer än en datakälla. Om den länkade servern definieras som en instans av SQL Server eller en Azure SQL Managed Instance kan fjärr lagrade procedurer köras.
Funktionerna och de argument som krävs för den länkade servern kan variera avsevärt. Exemplen i den här artikeln är ett typiskt exempel, men alla alternativ beskrivs inte. Mer information finns i sp_addlinkedserver (Transact-SQL).
Behörigheter
När du använder Transact-SQL-instruktioner kräver ÄNDRA NÅGON LÄNKAD SERVER behörighet på servern eller medlemskapet i setupadmin fast serverroll. När du använder Management Studio krävs CONTROL SERVER-behörighet eller medlemskap i sysadmin-fasta serverrollen.
Skapa en länkad server med SSMS
Skapa en länkad server med SSMS med hjälp av följande procedur:
Öppna dialogrutan Ny länkad server
I SQL Server Management Studio (SSMS):
- Öppna Object Explorer.
- Expandera serverobjekt.
- Högerklicka på Länkade servrar.
- Välj Ny länkad server.
Redigera sidan Allmänt för de länkade serveregenskaperna
På sidan Allmänt i rutan Länkad server skriver du namnet på instansen av SQL Server- som du länkar till.
Notera
Om instansen av SQL Server är standardinstansen anger du namnet på den dator som är värd för instansen av SQL Server. Om SQL Server- är en namngiven instans anger du namnet på datorn och namnet på instansen, till exempel Accounting\SQLExpress.
Ange servertyp och relaterad information om det behövs:
SQL Server
Identifiera den länkade servern som en instans av Microsoft SQL Server eller en Hanterad Azure SQL-instans. Om du använder den här metoden för att definiera en länkad server måste namnet som anges i länkad server vara serverns nätverksnamn. Dessutom kommer alla tabeller som hämtas från servern från standarddatabasen som definierats för inloggningen på den länkade servern.Annan datakälla
Ange en annan OLE DB-servertyp än SQL Server. Om du klickar på det här alternativet aktiveras alternativen under det.Leverantör
Välj en OLE DB-datakälla i listrutan. OLE DB-providern är registrerad med angiven PROGID i registret.Produktnamn
Ange produktnamnet för OLE DB-datakällan som ska läggas till som en länkad server.datakälla
Ange namnet på datakällan enligt ole db-providerns tolkning. Om du ansluter till en instans av SQL Server anger du instansnamnet.Providersträng
Ange den unika programmatiska identifieraren (PROGID) för OLE DB-providern som motsvarar datakällan. Exempel på giltiga providersträngar finns i sp_addlinkedserver (Transact-SQL).plats
Ange platsen för databasen enligt ole db-providerns tolkning.Katalog
Ange namnet på katalogen som ska användas när du upprättar en anslutning till OLE DB-providern.
Redigera sidan Säkerhet för de länkade serveregenskaperna
På sidan Security anger du den säkerhetskontext som används när den ursprungliga instansen ansluter till den länkade servern. Det finns två strategier för att konfigurera här som kan användas ensam eller kombineras. Den första är att mappa inloggningar från den lokala servern till fjärrservern, och den andra är hur den länkade servern ska hantera inloggningar som inte mappas.
Lägga till inloggningsmappningar
Du kan också ange hur specifika lokala serverinloggningar ska autentiseras med den länkade servern.
Under Lokal serverinloggning till fjärrserverns inloggningsmappningarupprepar du följande process för varje inloggning som du vill mappa:
Välj Lägg till.
Ange ett lokalt användarkonto.
Ange den lokala inloggning som kan ansluta till den länkade servern. Den lokala inloggningen kan vara antingen en inloggning med SQL Server-autentisering eller en Windows-autentiseringsinloggning. Det går inte att använda en Windows-grupp eller en oberoende databasanvändare. Använd den här listan om du vill begränsa anslutningen till specifika inloggningar eller tillåta att vissa inloggningar ansluter som en annan inloggning.
Obs
Vanliga problem med länkade servrar som använder Windows-autentisering till en SQL Server-fjärrinstans beror på problem med tjänstens huvudnamn (SPN). Mer information finns i Service Principal Name (SPN)-stöd i Klientanslutningar. Microsoft Kerberos Configuration Manager för SQL Server är ett diagnostikverktyg som hjälper dig att felsöka Kerberos-relaterade anslutningsproblem med SQL Server. Mer information finns i Microsoft Kerberos Configuration Manager för SQL Server.
Välj Impersonera (valfritt).
Skicka användarnamnet och lösenordet från den lokala inloggningen till den länkade servern. För SQL Server-autentisering måste det finnas en inloggning med exakt samma namn och lösenord på fjärrservern. För Windows-inloggningar måste inloggningen vara en giltig inloggning på den länkade servern.
Om du vill använda personifiering måste konfigurationen uppfylla kravet på delegering.
Ange en fjärranvändare om du inte använder imitering.
Använd fjärranvändaren för att mappa användare som definierats i Lokal inloggning. Fjärranvändaren måste ha en SQL Server-autentiseringsinlogg på fjärrservern.
Ange ett fjärrlösenord om du inte använder personifiering.
- Ange lösenordet för fjärranvändaren.
Välj Ta bort om du vill ta bort en befintlig lokal inloggning.
Ange standardsäkerhetskontexten för inloggningar som inte finns i mappningslistan
I en domänmiljö där användare ansluter med hjälp av sina domäninloggningar är det ofta det bästa valet att välja Göras med hjälp av inloggningens aktuella säkerhetskontext. När användarna ansluter till den ursprungliga SQL Server- med hjälp av en SQL Server- inloggning, är det bästa valet ofta att välja Genom att använda den här säkerhetskontextenoch sedan ange nödvändiga autentiseringsuppgifter för att autentisera på den länkade servern.
Välj något av följande alternativ:
Ska inte göras
En anslutning görs inte för inloggningar som inte definierats i listan.Göras utan att använda en säkerhetskontext
En anslutning görs utan att använda en säkerhetskontext för inloggningar som inte definierats i listan.Görs med inloggningens aktuella säkerhetskontext
En anslutning görs med den aktuella säkerhetskontexten för inloggningen för inloggningar som inte har definierats i listan. Om du är ansluten till den lokala servern med Windows-autentisering används dina Windows-autentiseringsuppgifter för att ansluta till fjärrservern. Om du är ansluten till den lokala servern med SQL Server-autentisering används inloggningsnamn och lösenord för att ansluta till fjärrservern. I det här fallet måste det finnas en inloggning med exakt samma namn och lösenord på fjärrservern.Görs med hjälp av den här säkerhetskontexten
En anslutning görs med inloggningen och lösenordet som anges i Fjärrinloggning och Med lösenord rutor för inloggningar som inte har definierats i listan. Fjärrinloggningen måste vara en SQL Server-autentiseringsinloggning på fjärrservern.Försiktighet
Om en länkad server har konfigurerats med alternativet Görs med den här säkerhetskontextenkan alla användare på instansen komma åt den fjärrlänkade servern med hjälp av den här kontexten. Detta kan ha den oavsiktliga risken för missbruk eller skadlig intern åtkomst. Den SQL-autentiserade Fjärrinloggning som tillhandahålls till den länkade servern bör beviljas minsta nödvändiga behörigheter på fjärrservern, för att säkerställa en princip med minsta möjliga behörighet och minska attackytan.
Redigera sidan Serveralternativ i egenskaper för länkad server (valfritt)
Om du vill visa eller ange serveralternativ väljer du sidan Serveralternativ. Du kan redigera något av följande alternativ:
sorteringskompatibel
Påverkar körning av distribuerad fråga mot länkade servrar. Om det här alternativet är inställt på sant förutsätter SQL Server att alla tecken på den länkade servern är kompatibla med den lokala servern, när det gäller teckenuppsättning och sorteringssekvens (eller sorteringsordning). Detta gör det möjligt för SQL Server att skicka jämförelser på teckenkolumner till providern. Om det här alternativet inte har angetts utvärderar SQL Server alltid jämförelser på teckenkolumner lokalt.Det här alternativet bör endast anges om det är säkert att datakällan som motsvarar den länkade servern har samma teckenuppsättning och sorteringsordning som den lokala servern.
Dataåtkomst
Aktiverar och inaktiverar en länkad server för distribuerad frågeåtkomst.RPC-
Aktiverar fjärrproceduranrop (RPC) från den angivna servern.RPC Out
Aktiverar RPC på den angivna servern.Använda fjärrsortering
Avgör om sortering av en fjärrkolumn eller en lokal server ska användas.Om det är sant används sortering av fjärrkolumner för SQL Server-datakällor, och sorteringen som anges i sorteringsnamnet används för datakällor som inte är SQL Server.
Om det är falskt använder distribuerade frågor alltid standardsortering av den lokala servern, medan sorteringsnamn och sortering av fjärrkolumner ignoreras. Standardvärdet är falskt.
sorteringsnamn
Anger namnet på sorteringen som används av fjärrdatakällan om fjärrsortering är sant och datakällan inte är en SQL Server-datakälla. Namnet måste vara en av de sorteringsordningar som stöds av SQL Server.Använd det här alternativet när du kommer åt en annan OLE DB-datakälla än SQL Server, men vars sortering matchar en av SQL Server-sorteringarna.
Den länkade servern måste ha stöd för en enda sortering som ska användas för alla kolumner på servern. Ange inte det här alternativet om den länkade servern stöder flera sorteringar i en enda datakälla, eller om den länkade serverns sortering inte kan fastställas matcha en av SQL Server-sorteringarna.
Tidsgräns för anslutning
Timeout-värde i sekunder för anslutning till en länkad server.Om 0 använder du
sp_configure
standardvärdet tidsgräns för fjärrinloggning alternativ.Tidsgräns för frågor
Timeout-värde i sekunder för frågor mot en länkad server.Om 0 använder du
sp_configure
standardvärdet tidsgräns för fjärrfrågor alternativ.Aktivera befordran av distribuerade transaktioner
Använd det här alternativet för att skydda åtgärderna för en server-till-server-procedur via en Microsoft Distributed Transaction Coordinator-transaktion (MS DTC). När det här alternativet är TRUE startar anrop av en fjärrlagrad procedur en distribuerad transaktion och registrerar transaktionen med MS DTC. Mer information finns i sp_serveroption (Transact-SQL).
Spara den länkade servern
Välj OK.
Visa eller redigera alternativ för länkad serverprovider i SSMS
Alla leverantörer har inte samma tillgängliga alternativ. Vissa typer av data har till exempel tillgängliga index och andra kanske inte. Använd den här dialogrutan för att hjälpa SQL Server att förstå providerns funktioner. SQL Server installerar några vanliga dataprovidrar, men när produkten som tillhandahåller data ändras kanske providern som installeras av SQL Server inte stöder alla de senaste funktionerna. Den bästa källan till information om funktionerna i produkten som tillhandahåller data är dokumentationen för den produkten.
Så här öppnar du sidan för den länkade serverns Provideralternativ i SSMS:
- Öppna Object Explorer.
- Expandera serverobjekt.
- Expandera länkade servrar.
- Expandera Leverantörer.
- Högerklicka på en leverantör och välj Egenskaper.
Provideralternativ definieras på följande sätt:
Dynamisk parameter
Anger att leverantören tillåter '?' frågemarkörsyntax för parameterbaserade frågor. Ange endast det här alternativet om providern stöder ICommandWithParameters-gränssnittet och stöder ett "?" som parametermarkör. Om du anger det här alternativet kan SQL Server köra parametriserade frågor mot providern. Möjligheten att köra parametriserade frågor mot providern kan ge bättre prestanda för vissa frågor.Kapslade frågor
Anger att providern tillåter kapsladeSELECT
-instruktioner i FROM-satsen. Om du anger det här alternativet kan SQL Server delegera vissa frågor till providern som kräver kapslade SELECT-instruktioner i FROM-satsen.endast nivå noll
Endast OLE DB-gränssnitt på nivå 0 anropas mot providern.Tillåt inprocess
SQL Server gör att providern kan instansieras som en processerver. När det här alternativet inte har angetts är standardbeteendet att instansiera providern utanför SQL Server-processen. Om du instansierar providern utanför SQL Server-processen skyddas SQL Server-processen från fel i providern. När providern instansieras utanför SQL Server-processen tillåts inte uppdateringar eller infogningar som refererar till långa kolumner (text, ntexteller bild).
Icke-transaktionsuppdateringar
SQL Server tillåter uppdateringar, även om ITransactionLocal inte är tillgänglig. Om det här alternativet är aktiverat kan uppdateringar mot providern inte återställas eftersom providern inte stöder transaktioner.Index som åtkomstsökväg
SQL Server försöker använda providerns index för att hämta data. Som standard används index endast för metadata och öppnas aldrigTillåt inte ad hoc-åtkomst
SQL Server tillåter inte ad hoc-åtkomst via funktionerna OPENROWSET och OPENDATASOURCE mot OLE DB-providern. När det här alternativet inte har angetts tillåter INTE HELLER SQL Server ad hoc-åtkomst.stöder operatorn "Like"
Anger att providern stöder frågor med hjälp av nyckelordet LIKE.
Skapa en länkad server med Transact-SQL
Om du vill skapa en länkad server med Transact-SQL använder du sp_addlinkedserver (Transact-SQL), CREATE LOGIN (Transact-SQL)och sp_addlinkedsrvlogin (Transact-SQL)-instruktioner.
Det här exemplet skapar en länkad server till en annan instans av SQL Server med Transact-SQL:
I Frågeredigeraren anger du följande Transact-SQL kommando för att länka till en instans av SQL Server med namnet
SRVR002\ACCTG
:USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct=N'SQL Server'; GO
Kör följande kod för att konfigurera den länkade servern att använda domänautentiseringsuppgifterna för inloggningen som använder den länkade servern.
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SRVR002\ACCTG', @locallogin = NULL , @useself = N'True'; GO
Följ upp: Steg att vidta när du har skapat en länkad server
Följande steg hjälper dig att verifiera en länkad server.
Testa den länkade servern
Överväg någon av följande två metoder för att testa en länkad servers autentisering i din aktuella säkerhetskontext.
Om du vill testa möjligheten att ansluta till en länkad server i SSMS bläddrar du till den länkade servern i Object Explorer, högerklickar på den länkade servern och väljer sedan Testa anslutning.
Om du vill testa möjligheten att ansluta till en länkad server i T-SQL kör du en enkel
SELECT
-instruktion, till exempel för att hämta grundläggande databaskataloginformation. Det här exemplet returnerar namnen på databaserna på den länkade servern.SELECT name FROM [SRVR002\ACCTG].master.sys.databases; GO
Koppla tabeller från en länkad server
Använd namn i fyra delar för att referera till ett objekt på en länkad server. Kör följande kod för att returnera en lista över alla inloggningar på den lokala servern och deras matchande inloggningar på den länkade servern.
SELECT local.name AS LocalLogins, linked.name AS LinkedLogins
FROM master.sys.server_principals AS local
LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
ON local.name = linked.name;
GO
När NULL
returneras för den länkade serverinloggningen anger det att inloggningen inte finns på den länkade servern. Dessa inloggningar kommer inte att kunna använda den länkade servern om inte den länkade servern har konfigurerats för att skicka en annan säkerhetskontext eller om den länkade servern accepterar anonyma anslutningar.
Länkade servrar med Azure SQL Managed Instance
Om du använder Azure SQL Managed Instance kan du läsa följande exempel från sp_addlinkedserver (Transact-SQL):
Skapa länkad SQL Managed Instance-server med hanterad identitet Microsoft Entra-autentisering
Skapa en länkad server för SQL Managed Instance med genomgående Microsoft Entra-autentisering
Nästa steg
Läs mer om att hantera länkade servrar i följande artiklar: