Dela via


Länkade servrar (databasmotor)

gäller för:SQL ServerAzure SQL Managed Instance

Länkade servrar gör det möjligt för SQL Server Database Engine 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. Vanligtvis är länkade servrar 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 OLE DB-datakällor kan konfigureras som länkade servrar, inklusive databasprovidrar från tredje part och Azure Cosmos DB.

Anmärkning

Länkade servrar är tillgängliga i SQL Server och Azure SQL Managed Instance (med vissa begränsningar). Länkade servrar är inte tillgängliga i Azure SQL Database.

När ska jag använda länkade servrar?

Med länkade servrar kan du implementera distribuerade databaser som kan hämta och uppdatera data i andra databaser. Länkade servrar är en bra lösning i scenarier där du behöver implementera databassharding utan att behöva skapa en anpassad programkod eller läsa in direkt från fjärranslutna datakällor. Länkade servrar har följande fördelar:

  • Möjligheten att komma åt data utanför SQL Server.

  • Möjligheten att utfärda distribuerade frågor, uppdateringar, kommandon och transaktioner på heterogena datakällor i företaget.

  • Möjligheten att hantera olika datakällor på samma sätt.

Du kan konfigurera en länkad server med hjälp av SQL Server Management Studio eller med hjälp av instruktionen sp_addlinkedserver . OLE DB-providrar varierar kraftigt i vilken typ och antal parametrar som krävs. Vissa leverantörer kräver till exempel att du anger en säkerhetskontext för anslutningen med hjälp av sp_addlinkedsrvlogin. Vissa OLE DB-leverantörer tillåter att SQL Server uppdaterar data på OLE DB-källan. Andra tillhandahåller endast skrivskyddad dataåtkomst. Information om varje OLE DB-provider finns i dokumentationen för den OLE DB-providern.

Länkade serverkomponenter

En länkad serverdefinition anger följande objekt:

  • En OLE DB-leverantör

  • En OLE DB-datakälla

En OLE DB-provider är en DLL som hanterar och interagerar med en specifik datakälla. En OLE DB-datakälla identifierar den specifika databas som kan nås via OLE DB. Även om datakällor som efterfrågas via länkade serverdefinitioner vanligtvis är databaser, finns OLE DB-leverantörer för olika filer och filformat. Dessa inkluderar textfiler, kalkylbladsdata och resultatet av innehållssökningar i fulltext.

Från och med SQL Server 2019 (15.x) är Microsoft OLE DB-drivrutinen för SQL Server (PROGID: MSOLEDBSQL) standardprovidern för OLE DB. I tidigare versioner var DEN interna SQL Server-klienten (PROGID: SQLNCLI11) standardprovidern för OLE DB.

Viktigt!

Den interna SQL Server-klienten (ofta förkortad SNAC) har tagits bort från SQL Server 2022 (16.x) och SQL Server Management Studio 19 (SSMS). Både SQL Server Native Client OLE DB-providern (SQLNCLI eller SQLNCLI11) och den äldre Microsoft OLE DB-providern för SQL Server (SQLOLEDB) rekommenderas inte för ny utveckling. Växla till den nya Microsoft OLE DB Driver (MSOLEDBSQL) för SQL Server framöver.

Länkade servrar till Microsoft Access- och Excel-källor stöds endast av Microsoft när du använder 32-bitars Microsoft.JET.OLEDB.4.0 OLE DB-providern.

Anmärkning

DISTRIBUERAde SQL Server-frågor är utformade för att fungera med alla OLE DB-leverantörer som implementerar de nödvändiga OLE DB-gränssnitten. SQL Server har dock testats mot STANDARD-OLE DB-providern.

Information om länkad server

Följande bild visar grunderna i en länkad serverkonfiguration.

Diagram som visar klientnivå, servernivå och databasservernivå.

Vanligtvis används länkade servrar för att hantera distribuerade frågor. När ett klientprogram kör en distribuerad fråga via en länkad server parsar SQL Server kommandot och skickar begäranden till OLE DB. Radsuppsättningsförfrågan kan utföras genom att köra en fråga mot providern eller öppna en bastabell från providern.

Anmärkning

För att en datakälla ska kunna returnera data via en länkad server måste OLE DB-providern (DLL) för den datakällan finnas på samma server som SQL Server-instansen.

Viktigt!

När en OLE DB-provider används måste kontot som SQL Server-tjänsten körs under ha läs- och körningsbehörigheter för katalogen och alla underkataloger där providern är installerad. Detta inkluderar Microsoft-utgivna leverantörer och alla tredjepartsleverantörer.

Anmärkning

Länkade servrar stöder Direktautentisering i Active Directory när du använder fullständig delegering. Från och med SQL Server 2017 (14.x) CU17 stöds även direktautentisering med begränsad delegering. Men resursbaserad begränsad delegering stöds inte.

Hantera leverantörer

Det finns en uppsättning alternativ som styr hur SQL Server läser in och använder OLE DB-providers som anges i registret.

Hantera länkade serverdefinitioner

När du konfigurerar en länkad server registrerar du anslutningsinformationen och datakällsinformationen med SQL Server. När datakällan har registrerats kan den refereras till med ett enda logiskt namn.

Du kan använda lagrade procedurer och katalogvyer för att hantera länkade serverdefinitioner:

  • Skapa en länkad serverdefinition genom att köra sp_addlinkedserver.

  • Visa information om de länkade servrar som definierats i en specifik instans av SQL Server genom att köra en fråga mot sys.servers systemkatalogvyn.

  • Ta bort en länkad serverdefinition genom att köra sp_dropserver. Du kan också använda den här lagrade proceduren för att ta bort en fjärrserver.

Du kan också definiera länkade servrar med hjälp av SQL Server Management Studio. Högerklicka på Serverobjekt i Objektutforskaren, välj Nytt och välj Länkad server. Du kan ta bort en länkad serverdefinition genom att högerklicka på det länkade servernamnet och välja Ta bort.

När du kör en distribuerad fråga mot en länkad server ska du inkludera ett fullständigt kvalificerat tabellnamn i fyra delar som varje datakälla ska köra frågor mot. Det här fyradelade namnet ska vara i formuläret <linked_server_name>.<catalog>.<schema>.<object_name>.

Referenser till tillfälliga objekt kommer alltid att lösas till den lokala instansens tempdb där det är tillämpligt, även när det länkade servernamnet används som prefix.

Länkade servrar kan definieras för att peka tillbaka (loopa tillbaka) till den server där de definieras. Loopback-servrar är mest användbara när du testar ett program som använder distribuerade frågor i ett enda servernätverk. Loopback-länkade servrar är avsedda för testning och stöds inte för många åtgärder, till exempel distribuerade transaktioner.

Länkade servrar med Azure SQL Managed Instance

Länkade Azure SQL Managed Instance-servrar stöder både SQL-autentisering och autentisering med Microsoft Entra-ID (tidigare Azure Active Directory).

Om du vill använda SQL Agent-jobb på Azure SQL Managed Instance för att utföra en fråga mot en fjärrserver via en länkad server, använder du sp_addlinkedsrvlogin för att skapa en mappning från en inloggning på den lokala servern till en inloggning på fjärrservern. När SQL Agent-jobbet ansluter till fjärrservern via den länkade servern körs T-SQL-frågan i kontexten för fjärrinloggningen. Mer information finns i SQL Agent-jobb med Azure SQL Managed Instance.

Microsoft Entra-autentisering

Två stödda Microsoft Entra-autentiseringslägen är: hanterad identitet och vidarebefordran. Hanterad identitetsautentisering kan användas för att tillåta lokala inloggningar att fråga fjärrlänkade servrar. Med pass-through-autentisering kan en användare som har autentiserats mot en lokal instans få åtkomst till en fjärrinstans via en länkad server.

Om du vill använda Microsoft Entra-direktautentisering för en länkad server i Azure SQL Managed Instance behöver du följande krav:

  • Samma huvudnamn läggs till som en inloggning på fjärrservern.
  • Båda instanserna är medlemmar i SQL-förtroendegruppen.

Anmärkning

Befintliga definitioner av länkade servrar som har konfigurerats för direktströmningsläge stöder Microsoft Entra-autentisering. Det enda kravet för detta är att lägga till SQL Managed Instance i serverförtroendegruppen.

Följande begränsningar gäller för Microsoft Entra-autentisering för länkade servrar i Azure SQL Managed Instance:

  • Microsoft Entra-autentisering stöds inte för SQL-hanterade instanser i olika Microsoft Entra-klienter.
  • Microsoft Entra-autentisering för länkade servrar stöds endast med OLE DB-drivrutinsversion 18.2.1 och senare.

MSOLEDBSQL19 och länkade servrar

För närvarande förhindrar MSOLEDBSQL19 att länkade servrar skapas utan kryptering och ett betrott certifikat (ett självsignerat certifikat är otillräckligt). Om länkade servrar krävs använder du den befintliga versionen av MSOLEDBSQL som stöds.

Från och med förhandsversionen av SQL Server 2025 (17.x) kan du använda Microsoft OLE DB Driver version 19 med länkade servrar. Den här uppdaterade drivrutinen introducerar betydande säkerhetsförbättringar, inklusive stöd för TDS 8.0. TDS 8 inför en förändring som inte är bakåtkompatibel: du måste ange Encryption-parametern i providersträngen.

Parametern Encryption erbjuder tre distinkta inställningar:

  • Yes/True/Mandatory
  • No/False/Optional
  • Strict

Alternativet Strict kräver användning av TDS 8.0 och kräver ett servercertifikat för säkra anslutningar. För Yes/True/Mandatoryförväntas ett betrott certifikat. Du kan inte använda ett självsignerat certifikat.

OLE DB-version Krypteringsparameter Möjliga värden Standardvärde
OLE DB 18 Valfritt Sant/Obligatoriskt, Falskt/Nej Falskt/nej
OLE DB 19 Krävs Nej/Falskt, Ja/Obligatoriskt, Strikt (ny) Ja/obligatoriskt

Parametern TrustServerCertificate stöds, men rekommenderas inte. Förtroendeservercertifikat inaktiverar certifikatverifiering, vilket försvagar säkerheten för krypterade anslutningar.

Klientinställning för betrodd servercertifikat Anslutningssträng/anslutningsattribut Certifikat för förtroendeserver Certifikatverifiering
0 Nej (standard) Ja
0 Ja Ja
1 Nej (standard) Ja
1 Ja Nej

De här inställningarna måste anges korrekt i providersträngen när du konfigurerar länkade serveranslutningar för att säkerställa kompatibilitet och säkerhet med den nya drivrutinen.

Mer information om OLE DB 19 och kryptering, certifikat och förtroendeservercertifikat för OLE DB 19 finns i Kryptering och certifikatverifiering i OLE DB.