Condividi tramite


Server collegati (motore di database)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

I server collegati consentono al motore di database di SQL Server e all'istanza gestita di SQL di Azure di leggere i dati da origini dati remote ed eseguire comandi su server di database remoti (ad esempio origini dati OLE DB), all'esterno dell'istanza di SQL Server. In genere, si configurano i server collegati per consentire al motore di database di eseguire un'istruzione Transact-SQL che include tabelle in un'altra istanza di SQL Server o un altro prodotto di database, ad esempio Oracle. È possibile configurare molti tipi di origini dati OLE DB come server collegati, inclusi i provider di database di terze parti e Azure Cosmos DB.

Nota

I server collegati sono disponibili nell'SQL Server e nell'istanza gestita di SQL di Azure (con alcuni vicoli). I server collegati non sono disponibili nel database SQL di Azure.

Quando si usano i server collegati?

I server collegati consentono di implementare i database distribuiti con cui recuperare e aggiornare i dati in altri database. Usare i server collegati in scenari in cui è necessario implementare il partizionamento orizzontale del database senza creare codice applicazione personalizzato o caricarlo direttamente da origini dati remote. I server collegati offrono i vantaggi riportati di seguito:

  • Possibilità di accedere ai dati dall'esterno di SQL Server.

  • Possibilità di eseguire query distribuite, aggiornamenti, comandi e transazioni su origini dati eterogenee in tutta l'azienda.

  • Possibilità di utilizzare origini dati diverse in modo analogo.

È possibile configurare un server collegato usando SQL Server Management Studio o l'istruzione sp_addlinkedserver. I provider OLE DB variano in modo sostanziale nel tipo e nel numero di parametri richiesti. Ad esempio alcuni provider richiedono di fornire un contesto di sicurezza per la connessione usando sp_addlinkedsrvlogin. Alcuni provider OLE DB consentono a SQL Server di aggiornare i dati nell'origine OLE DB. Altri forniscono accesso soltanto ai dati di sola lettura. Per informazioni su ogni provider OLE DB, consultare la documentazione relativa a detto provider OLE DB.

Componenti di un server collegato

Nella definizione di un server collegato sono specificati gli oggetti seguenti:

  • Un provider OLE DB

  • Un'origine dei dati OLE DB

Un provider OLE DB è una DLL in grado di gestire un'origine dei dati specifica e interagire con essa. Un'origine dati OLE DB identifica il database specifico a cui è possibile accedere tramite OLE DB. Anche se le origini dei dati su cui si eseguono query tramite definizioni di server collegati sono in genere database, esistono provider OLE DB per vari file e formati di file, Questi file includono testo normale, dati del foglio di calcolo e risultati delle ricerche di contenuto full-text.

A partire da SQL Server 2019 (15.x), Microsoft OLE DB Driver per SQL Server (PROGID: MSOLEDBSQL) è il provider OLE DB predefinito. Nelle versioni precedenti il SQL Server Native Client (PROGID: SQLNCLI11) era il provider OLE DB predefinito.

Importante

SQL Server Native Client (spesso abbreviato SNAC) è stato rimosso da SQL Server 2022 (16.x) e da SQL Server Management Studio 19 (SSMS). Il provider OLE DB di SQL Server Native Client (SQLNCLI o SQLNCLI11) e il provider OLE DB legacy Microsoft per SQL Server (SQLOLEDB) non sono consigliati per lo sviluppo di nuove applicazioni. In futuro, passare al nuovo driver Microsoft OLE DB (MSOLEDBSQL) per SQL Server.

Microsoft supporta i server collegati alle origini Excel e Access solo quando si usa il provider OLE DB Microsoft.JET.OLEDB.4.0 a 32 bit.

Nota

Le query distribuite di SQL Server funzionano con qualsiasi provider OLE DB che implementa le interfacce OLE DB necessarie. Tuttavia, SQL Server è stato testato rispetto al provider OLE DB predefinito.

Dettagli relativi ai server collegati

Nella figura seguente vengono illustrati i componenti di base di una configurazione con server collegati.

Diagram che mostra il livello client, il livello server e il livello server di database.

In genere, si usano server collegati per gestire le query distribuite. Quando un'applicazione client esegue una query distribuita tramite un server collegato, SQL Server analizza il comando e invia le richieste a OLE DB. È possibile richiedere l'esecuzione di una query sul provider o l'apertura di una tabella di base dal provider.

Un'origine dei dati può restituire dati tramite un server collegato solo se il relativo provider OLE DB (DLL) è presente nello stesso server dell'istanza di SQL Server.

I server collegati supportano l'autenticazione pass-through di Active Directory quando si usa la delega completa. A partire da SQL Server 2017 (14.x) CU17, è supportata anche l'autenticazione pass-through con delega vincolata; Tuttavia, la delega vincolata basata sulle risorse non è supportata.

Importante

Quando si usa un provider OLE DB, l'account in cui viene eseguito il servizio SQL Server deve disporre delle autorizzazioni di lettura ed esecuzione per la directory e di tutte le sottodirectory in cui è installato il provider. Questo requisito si applica ai provider rilasciati da Microsoft e a qualsiasi provider di terze parti.

Gestire i provider

È disponibile un set di opzioni che consente di controllare la modalità con cui SQL Server carica e usa i provider OLE DB specificati nel Registro di sistema.

Gestire le definizioni dei server collegati

Quando si configura un server collegato, registrare le informazioni di connessione e le informazioni sull'origine dati con SQL Server. Dopo la registrazione, è possibile fare riferimento a tale origine dati con un singolo nome logico.

Usare stored procedure e viste del catalogo per gestire le definizioni del server collegato:

  • Creare una definizione di un server collegato eseguendosp_addlinkedserver.

  • Per visualizzare informazioni sui server collegati definiti in una specifica istanza di SQL Server, eseguire una query sulle viste del catalogo di sistema sys.servers.

  • Eliminare la definizione di un server collegato eseguendo sp_dropserver. Questa stored procedure può essere utilizzata anche per rimuovere un server remoto.

È anche possibile definire i server collegati con SQL Server Management Studio. In Esplora oggetti fare clic con il pulsante destro del mouse su Oggetti server, scegliere Nuovo e selezionare Server collegato. Per eliminare la definizione di un server collegato, è possibile fare clic con il pulsante destro del mouse sul nome del server collegato e scegliere Elimina.

Quando si esegue una query distribuita su un server collegato, per ogni origine dei dati su cui viene eseguita la query specificare un nome di tabella completo in quattro parti. Questo nome in quattro parti deve essere nel formato <linked_server_name>.<catalog>.<schema>.<object_name>.

I riferimenti agli oggetti temporanei vengono sempre risolti nell'istanza locale tempdb, se applicabile, anche quando si antepone quest'ultimo al nome del server collegato.

È possibile definire i server collegati in modo che puntino indietro (loopback) al server in cui vengono definiti. I server di loopback risultano particolarmente utili durante il test di un'applicazione in cui vengono utilizzate query distribuite in una rete con un solo server. I server collegati di tipo loopback sono destinati alle verifiche e non sono supportati per molte operazioni, come le transazioni distribuite.

Server collegati con Istanza gestita di SQL di Azure

I server collegati di Istanza gestita di SQL di Azure supportano sia l'autenticazione SQL che l'autenticazione con l'ID Microsoft Entra.

Per usare i processi di SQL Agent nell'istanza gestita di SQL di Azure per eseguire query su un server remoto tramite un server collegato, usare sp_addlinkedsrvlogin per creare un mapping da un account di accesso nel server locale a un account di accesso nel server remoto. Quando il processo di SQL Agent si connette al server remoto tramite il server collegato, esegue la query T-SQL nel contesto dell'account di accesso remoto. Per maggiori informazioni, vedere Processi SQL Agent per l’istanza gestita di SQL di Azure.

Autenticazione Microsoft Entra

Le due modalità di autenticazione di Microsoft Entra supportate sono l'identità gestita e pass-through. Usare l'autenticazione dell'identità gestita per consentire agli account di accesso locali di eseguire query sui server collegati remoti. Usare l'autenticazione pass-through per consentire a un'entità che può eseguire l'autenticazione con un'istanza locale di accedere a un'istanza remota tramite un server collegato.

Per usare l'autenticazione pass-through di Microsoft Entra per un server collegato in Istanza gestita di SQL di Azure, sono necessari i prerequisiti seguenti:

  • La stessa entità viene aggiunta come account di accesso nel server remoto.
  • Entrambe le istanze sono membri del gruppo di attendibilità SQL.

Nota

Le definizioni esistenti dei server collegati configurati per la modalità pass-through supportano l'autenticazione Microsoft Entra. L'unico requisito consiste nell'aggiungere Istanza gestita di SQL al gruppo di attendibilità del server.

Le limitazioni seguenti si applicano all'autenticazione di Microsoft Entra per i server collegati nell'istanza gestita di SQL di Azure:

  • L'autenticazione di Microsoft Entra non è supportata per le istanze gestite di SQL in tenant Microsoft Entra diversi.
  • L'autenticazione di Microsoft Entra per i server collegati è supportata solo con il driver OLE DB versione 18.2.1 e successive.

SQL Server 2025 e MSOLEDBSQL versione 19

A partire da SQL Server 2025 (17.x), il provider MSOLEDBSQL usa Microsoft OLE DB Driver 19 per impostazione predefinita. Questo driver aggiornato introduce miglioramenti significativi per la sicurezza, incluso il supporto per TDS 8.0 e TLS 1.3.

TDS 8.0 migliora la sicurezza aggiungendo una nuova opzione di crittografia e introduce una modifica che comporta un cambiamento significativo: il parametro Encryption non è più facoltativo. È necessario impostarlo nella stringa di connessione quando è destinata a un'altra istanza di SQL Server.

Nota

Senza il parametro Encrypt, i server collegati in SQL Server 2025 (17.x) per impostazione predefinita sono impostati su Encrypt=Mandatory e richiedono un certificato valido. Le connessioni senza un certificato valido hanno esito negativo.

Il Encryption parametro offre tre impostazioni distinte:

  • Yes, o Trueo Mandatory
  • No, o Falseo Optional
  • Strict

L'opzione Strict impone l'utilizzo di TDS 8.0 e richiede un certificato server per le connessioni sicure. Per Yes/True/Mandatory, è previsto un certificato attendibile. Non è possibile usare un certificato autofirmato.

Versione OLE DB Parametro di crittografia Valori possibili Valore predefinito
OLE DB 18 Opzionale Trueo Mandatoryo FalseNo No
OLE DB 19 Required No o False, Yes o Mandatory( Strict nuovo) Yes

Il TrustServerCertificate parametro è supportato, ma non consigliato. Impostare Trust Server Certificate su Yes disabilita la convalida del certificato, indebolisce la sicurezza delle connessioni crittografate. Per usare Trust Server Certificate , il client deve anche abilitarlo nel Registro di sistema del computer. Per informazioni sull'abilitazione del certificato del server di attendibilità, vedere Impostazioni del Registro di sistema. L'impostazione TrustServerCertificate=Yes non è consigliata per gli ambienti di produzione.

Quando si usa Encrypt=False o Encrypt=Optional:

  • Non è necessario alcun certificato.
  • Se viene fornito un certificato attendibile, il driver non lo convalida.
  • La connessione non fornisce alcuna crittografia.

Quando si usa Encrypt=True o Encrypt=Mandatorye non si usa TrustServerCertificate=Yes:

  • La connessione richiede un certificato firmato dalla CA valido.
  • Il certificato deve corrispondere al nome di dominio completo del server.
  • Se il nome alternativo nel certificato è diverso dal nome host di SQL Server, HostNameInCertificate deve essere impostato sul nome di dominio completo.
  • Il certificato deve essere installato nell'archivio Autorità di certificazione radice attendibili nel computer client.

Quando si usa Encrypt=Strict:

  • La connessione applica TDS 8.0.
  • La connessione richiede un certificato firmato da CA valido con corrispondenza FQDN.
  • HostNameInCertificate deve essere impostato sull'FQDN.
  • Il certificato deve essere considerato attendibile dal sistema client.
  • TrustServerCertificate la configurazione non è supportata. Deve essere presente un certificato valido.
Impostazione client Considera attendibile certificato server Attributo/stringa di connessione Trust Server Certificate Convalida del certificato
0 No (impostazione predefinita)
0 Yes
1 No (impostazione predefinita)
1 Yes NO

È necessario specificare correttamente queste impostazioni nella stringa di connessione durante la configurazione delle connessioni al server collegato per garantire la compatibilità e la sicurezza con il nuovo driver.

Aggiornamento dalle versioni precedenti di OLEDB

Si applica a: SQL Server 2025 (17.x) e versioni successive

Quando si esegue la migrazione dalle edizioni precedenti di SQL Server a SQL Server 2025 (17.x) con Microsoft OLE DB Driver 19, le configurazioni esistenti del server collegato potrebbero non riuscire. Valori predefiniti diversi per il parametro di crittografia possono causare questo errore a meno che non si fornisca un certificato valido.

In alternativa, è possibile ricreare il server collegato e includere Encrypt=Optional nella stringa di connessione. Se non è possibile modificare la configurazione del server collegato, abilitare il flag 17600 di traccia per mantenere il comportamento e le impostazioni predefinite di OLE DB 18.

** Nella Creazione guidata di server collegato di SQL Server Management Studio (SSMS), usare l'opzione Altre origini dati per configurare manualmente le opzioni di crittografia del server collegato.

Per altre informazioni su OLE DB 19 e la crittografia, il comportamento del certificato e del certificato del server di attendibilità per OLE DB 19, vedere Crittografia e convalida dei certificati in OLE DB.