Delen via


Gekoppelde servers (Database Engine)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Met gekoppelde servers kunnen de SQL Server Database Engine en Azure SQL Managed Instance gegevens lezen uit externe gegevensbronnen en opdrachten uitvoeren op externe databaseservers (bijvoorbeeld OLE DB-gegevensbronnen), buiten het exemplaar van SQL Server. Normaal gesproken configureert u gekoppelde servers om de Database Engine in staat te stellen een Transact-SQL instructie uit te voeren die tabellen bevat in een ander exemplaar van SQL Server of een ander databaseproduct zoals Oracle. U kunt veel soorten OLE DB-gegevensbronnen configureren als gekoppelde servers, waaronder databaseproviders van derden en Azure Cosmos DB.

Opmerking

Gekoppelde servers zijn beschikbaar in SQL Server en Azure SQL Managed Instance (met enkele beperkingen). Gekoppelde servers zijn niet beschikbaar in Azure SQL Database.

Wanneer gebruikt u gekoppelde servers?

Met gekoppelde servers kunt u gedistribueerde databases implementeren die gegevens in andere databases kunnen ophalen en bijwerken. Gebruik gekoppelde servers in scenario's waarin u database-sharding moet implementeren zonder aangepaste toepassingscode te maken of rechtstreeks vanuit externe gegevensbronnen te laden. Gekoppelde servers bieden de volgende voordelen:

  • De mogelijkheid om toegang te krijgen tot gegevens van buiten SQL Server.

  • De mogelijkheid om gedistribueerde query's, updates, opdrachten en transacties uit te voeren op heterogene gegevensbronnen in de hele onderneming.

  • De mogelijkheid om diverse gegevensbronnen op dezelfde manier aan te pakken.

U kunt een gekoppelde server configureren met behulp van SQL Server Management Studio of met behulp van de sp_addlinkedserver-instructie . OLE DB-providers variëren sterk in het type en het aantal vereiste parameters. Voor sommige providers moet u bijvoorbeeld een beveiligingscontext opgeven voor de verbinding met behulp van sp_addlinkedsrvlogin. Sommige OLE DB-providers staan SQL Server toe om gegevens op de OLE DB-bron bij te werken. Anderen bieden alleen alleen-lezen gegevenstoegang. Raadpleeg de documentatie voor die OLE DB-provider voor informatie over elke OLE DB-provider.

Gekoppelde serveronderdelen

Een definitie van een gekoppelde server geeft de volgende objecten op:

  • Een OLE DB-provider

  • Een OLE DB-gegevensbron

Een OLE DB-provider is een DLL die een specifieke gegevensbron beheert en gebruikt. Een OLE DB-gegevensbron identificeert de specifieke database waartoe u toegang hebt via OLE DB. Hoewel gegevensbronnen die via gekoppelde serverdefinities worden opgevraagd, gewoonlijk databases zijn, bestaan OLE DB-providers voor verschillende bestanden en bestandsindelingen. Deze bestanden bevatten tekst zonder opmaak, spreadsheetgegevens en de resultaten van zoekopdrachten in volledige tekst.

Vanaf SQL Server 2019 (15.x) is het Microsoft OLE DB-stuurprogramma voor SQL Server (PROGID: MSOLEDBSQL) de standaard OLE DB-provider. In eerdere versies was de SQL Server Native Client (PROGID: SQLNCLI11) de standaard OLE DB-provider.

Belangrijk

De SQL Server Native Client (vaak afgekort SNAC) is verwijderd uit SQL Server 2022 (16.x) en SQL Server Management Studio 19 (SSMS). Zowel de SQL Server Native Client OLE DB-provider (SQLNCLI of SQLNCLI11) als de verouderde Microsoft OLE DB-provider voor SQL Server (SQLOLEDB) worden niet aanbevolen voor nieuwe ontwikkeling. Schakel over naar het nieuwe Microsoft OLE DB-stuurprogramma (MSOLEDBSQL) voor SQL Server.

Microsoft ondersteunt alleen gekoppelde servers naar Excel- en Access-bronnen wanneer u de 32-bits Microsoft.JET.OLEDB.4.0 OLE DB-provider gebruikt.

Opmerking

Gedistribueerde SQL Server-query's werken met een OLE DB-provider die de vereiste OLE DB-interfaces implementeert. SQL Server is echter getest op basis van de standaard OLE DB-provider.

Details van gekoppelde server

In de volgende afbeelding ziet u de basisbeginselen van een gekoppelde serverconfiguratie.

Diagram met clientlaag, serverlaag en databaseserverlaag.

Normaal gesproken gebruikt u gekoppelde servers om gedistribueerde query's af te handelen. Wanneer een clienttoepassing een gedistribueerde query uitvoert via een gekoppelde server, parseert SQL Server de opdracht en verzendt deze aanvragen naar OLE DB. De rijsetaanvraag kan de vorm hebben van het uitvoeren van een query voor de provider of het openen van een basistabel van de provider.

Als u gegevens wilt retourneren via een gekoppelde server, moet de OLE DB-provider (DLL) voor die gegevensbron aanwezig zijn op dezelfde server als het exemplaar van SQL Server.

Gekoppelde servers ondersteunen Pass Through-verificatie van Active Directory bij gebruik van volledige delegatie. Vanaf SQL Server 2017 (14.x) CU17 wordt passthrough-verificatie met beperkte delegatie ook ondersteund; Beperkte delegering op basis van resources wordt echter niet ondersteund.

Belangrijk

Wanneer u een OLE DB-provider gebruikt, moet het account waaronder de SQL Server-service wordt uitgevoerd lees- en uitvoeringsmachtigingen hebben voor de map en alle submappen waarin de provider is geïnstalleerd. Deze vereiste is van toepassing op door Microsoft uitgebrachte providers en eventuele externe providers.

Aanbieders beheren

Er is een set opties waarmee wordt bepaald hoe SQL Server wordt geladen en gebruikmaakt van OLE DB-providers die zijn opgegeven in het register.

Definities van gekoppelde servers beheren

Wanneer u een gekoppelde server instelt, registreert u de verbindingsgegevens en gegevensbrongegevens bij SQL Server. Nadat deze is geregistreerd, kunt u naar die gegevensbron verwijzen met één logische naam.

Opgeslagen procedures en catalogusweergaven gebruiken om definities van gekoppelde servers te beheren:

  • Maak een definitie van een gekoppelde server door deze uit te voeren sp_addlinkedserver.

  • Bekijk informatie over de gekoppelde servers die zijn gedefinieerd in een specifiek exemplaar van SQL Server door een query uit te voeren in de sys.servers systeemcatalogusweergave.

  • Verwijder een definitie van een gekoppelde server door uit te voeren sp_dropserver. U kunt deze opgeslagen procedure ook gebruiken om een externe server te verwijderen.

U kunt gekoppelde servers ook definiëren met behulp van SQL Server Management Studio. Klik in Objectverkenner met de rechtermuisknop op Serverobjecten, selecteer Nieuw en selecteer Gekoppelde server. U kunt een definitie van een gekoppelde server verwijderen door met de rechtermuisknop op de naam van de gekoppelde server te klikken en Verwijderen te selecteren.

Wanneer u een gedistribueerde query uitvoert op een gekoppelde server, neemt u een volledig gekwalificeerde, vierdelige tabelnaam op voor elke gegevensbron waarop een query moet worden uitgevoerd. Deze vierdelige naam moet in het formulier <linked_server_name>.<catalog>.<schema>.<object_name>staan.

Verwijzingen naar tijdelijke objecten worden altijd omgezet naar de lokale instantie, tempdb zelfs wanneer het voorvoegsel met de naam van de gekoppelde server wordt voorafgegaan.

U kunt gekoppelde servers definiëren om terug te wijzen (teruglopen) naar de server waarop u ze definieert. Loopback-servers zijn het handigst bij het testen van een toepassing die gebruikmaakt van gedistribueerde query's op één servernetwerk. Gekoppelde Loopback-servers zijn bedoeld voor testen en worden niet ondersteund voor veel bewerkingen, zoals gedistribueerde transacties.

Gekoppelde servers met Azure SQL Managed Instance

Gekoppelde Azure SQL Managed Instance-servers ondersteunen zowel SQL-verificatie als verificatie met Microsoft Entra-id.

Als u SQL Agent-taken in Azure SQL Managed Instance wilt gebruiken om een query uit te voeren op een externe server via een gekoppelde server, gebruikt u sp_addlinkedsrvlogin om een toewijzing te maken van een aanmelding op de lokale server naar een aanmelding op de externe server. Wanneer de SQL Agent-taak via de gekoppelde server verbinding maakt met de externe server, wordt de T-SQL-query uitgevoerd in de context van de externe aanmelding. Zie SQL Agent-taken met Azure SQL Managed Instance voor meer informatie.

Microsoft Entra-authenticatie

Twee ondersteunde Microsoft Entra-verificatiemodi zijn: beheerde identiteit en pass-through. Gebruik verificatie van beheerde identiteit om lokale aanmeldingen toe te staan om query's uit te voeren op externe gekoppelde servers. Gebruik pass-through authenticatie om een principal toe te staan die kan worden geverifieerd met een lokale instantie, om toegang te krijgen tot een externe instantie via een gekoppelde server.

Als u passthrough-verificatie van Microsoft Entra wilt gebruiken voor een gekoppelde server in Azure SQL Managed Instance, hebt u de volgende vereisten nodig:

  • Dezelfde principal wordt toegevoegd als een aanmelding op de externe server.
  • Beide instanties zijn leden van de SQL-vertrouwensgroep.

Opmerking

Bestaande definities van gekoppelde servers die u hebt geconfigureerd voor de passthrough-modus ondersteunen Microsoft Entra-verificatie. De enige vereiste is om SQL Managed Instance toe te voegen aan de serververtrouwensgroep.

De volgende beperkingen gelden voor Microsoft Entra-verificatie voor gekoppelde servers in Azure SQL Managed Instance:

  • Microsoft Entra-verificatie wordt niet ondersteund voor met SQL beheerde exemplaren in verschillende Microsoft Entra-tenants.
  • Microsoft Entra-verificatie voor gekoppelde servers wordt alleen ondersteund met OLE DB-stuurprogrammaversie 18.2.1 en hoger.

SQL Server 2025 en MSOLEDBSQL versie 19

Vanaf SQL Server 2025 (17.x) gebruikt de MSOLEDBSQL-provider standaard Microsoft OLE DB-stuurprogramma 19. Dit bijgewerkte stuurprogramma introduceert aanzienlijke beveiligingsverbeteringen, waaronder ondersteuning voor TDS 8.0 en TLS 1.3.

TDS 8.0 verbetert de beveiliging door een nieuwe versleutelingsoptie toe te voegen en introduceert een belangrijke wijziging: de Encryption parameter is niet langer optioneel. U moet deze instellen in uw verbindingsreeks wanneer u zich richt op een ander SQL Server-exemplaar.

Opmerking

Zonder de Encrypt parameter worden gekoppelde servers in SQL Server 2025 (17.x) standaard ingesteld op Encrypt=Mandatory en hebben ze een geldig certificaat nodig. Verbindingen zonder een geldig certificaat mislukken.

De Encryption parameter biedt drie verschillende instellingen:

  • Yes, of , of TrueMandatory
  • No, of , of FalseOptional
  • Strict

De Strict optie vereist het gebruik van TDS 8.0 en vereist een servercertificaat voor beveiligde verbindingen. Voor Yes/True/Mandatorywordt een vertrouwd certificaat verwacht. U kunt geen zelfondertekend certificaat gebruiken.

OLE DB-versie Versleutelingsparameter Mogelijke waarden Standaardwaarde
OLE DB 18 Facultatief Trueof , Mandatory of FalseNo No
OLE DB 19 Vereist Noof , False of YesMandatory, Strict (nieuw) Yes

De TrustServerCertificate parameter wordt ondersteund, maar wordt niet aanbevolen. Als u Vertrouwensservercertificaat instelt om certificaatvalidatie uit te Yes schakelen, wordt de beveiliging van versleutelde verbindingen verzwakt. Als u Vertrouwensservercertificaat wilt gebruiken, moet de client dit ook inschakelen in het computerregister. Zie Registerinstellingen voor informatie over het inschakelen van vertrouwensservercertificaat. De instelling TrustServerCertificate=Yes wordt niet aanbevolen voor productieomgevingen.

Wanneer u het volgende gebruikt Encrypt=False of Encrypt=Optional:

  • Er is geen certificaat vereist.
  • Als er een vertrouwd certificaat is opgegeven, valideert het stuurprogramma het niet.
  • De verbinding biedt geen versleuteling.

Wanneer u het volgende gebruikt Encrypt=True of Encrypt=Mandatoryniet gebruikt TrustServerCertificate=Yes:

  • Voor de verbinding is een geldig ca-ondertekend certificaat vereist.
  • Het certificaat moet overeenkomen met de FQDN van de server.
  • Als de alternatieve naam in het certificaat verschilt van de SQL Server-hostnaam, HostNameInCertificate moet deze worden ingesteld op de FQDN.
  • Het certificaat moet worden geïnstalleerd in het archief vertrouwde basiscertificeringsinstanties op de clientcomputer.

Wanneer u het volgende gebruikt Encrypt=Strict:

  • De verbinding ondersteunt TDS 8.0.
  • Voor de verbinding is een geldig ca-ondertekend certificaat met FQDN-overeenkomst vereist.
  • HostNameInCertificate moet worden ingesteld op de FQDN.
  • Het certificaat moet worden vertrouwd door het clientsysteem.
  • TrustServerCertificate configuratie wordt niet ondersteund. Er moet een geldig certificaat aanwezig zijn.
Instelling van de clientinstelling voor het certificaat van de vertrouwde server Verbindingsreeks/verbindingskenmerk Trust Server-certificaat Certificaatvalidatie
0 No (standaard) Ja
0 Yes Ja
1 No (standaard) Ja
1 Yes Nee.

U moet deze instellingen correct opgeven in de verbindingsreeks bij het configureren van gekoppelde serververbindingen om compatibiliteit en beveiliging met het nieuwe stuurprogramma te garanderen.

Bijwerken vanuit eerdere OLEDB-versies

Van toepassing op: SQL Server 2025 (17.x) en latere versies

Wanneer u migreert van eerdere edities van SQL Server naar SQL Server 2025 (17.x) met Microsoft OLE DB Driver 19, kunnen bestaande gekoppelde serverconfiguraties mislukken. Verschillende standaardwaarden voor de versleutelingsparameter kunnen deze fout veroorzaken, tenzij u een geldig certificaat opgeeft.

U kunt ook de gekoppelde server opnieuw maken en opnemen Encrypt=Optional in de verbindingsreeks. Als u de configuratie van de gekoppelde server niet kunt wijzigen, schakelt u traceringsvlag 17600 in om het gedrag en de standaardinstellingen van OLE DB 18 te behouden.

Gebruik in de wizard Gekoppelde server maken van SQL Server Management Studio (SSMS) de optie Overige gegevensbronnen om handmatig de opties voor versleuteling van de gekoppelde server te configureren.

Zie Versleuteling en certificaatvalidatie in OLE DB voor meer informatie over OLE DB 19, versleuteling en het gedrag van certificaten en Trust Server Certificate voor OLE DB 19.