Server collegati (Motore di database)
Si applica a: SQL Server Istanza gestita di SQL di Azure
I server collegati consentono al motore di database di SQL Server e a Istanza gestita di SQL di Azure di leggere i dati dalle origini dati remote e di eseguire comandi sui server di database remoti, ad esempio le origini dati OLE DB, al di fuori dell'istanza di SQL Server. In genere i server collegati sono configurati per consentire al motore di database di eseguire un'istruzione Transact-SQL che include tabelle in un'altra istanza di SQL Server o in un altro prodotto del database, ad esempio Oracle. È possibile configurare come server collegati molti tipi di origini dati OLE DB, tra cui 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. I server collegati sono un'ottima soluzione negli scenari in cui è necessario implementare il partizionamento orizzontale dei database senza dover creare un codice di applicazione personalizzata o per caricare direttamente dati da origini 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 dei dati OLE DB identifica lo specifico database a cui è possibile accedere con 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, quali file di testo, dati di fogli di calcolo e risultati di 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.
I server collegati alle origini Microsoft Access ed Excel sono supportati da Microsoft solo quando si usa il provider OLE DB Microsoft.JET.OLEDB.4.0 a 32 bit.
Nota
Le query distribuite di SQL Server sono progettate per funzionare con qualsiasi provider OLE DB che implementi 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.
I server collegati vengono in genere utilizzati per la gestione delle 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.
Nota
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.
Importante
Quando viene usato un provider OLE DB, l'account con cui viene eseguito il servizio SQL Server deve avere autorizzazioni di lettura ed esecuzione per la directory e tutte le sottodirectory in cui è installato il provider. Sono inclusi il provider rilasciato da Microsoft ed eventuali provider di terze parti.
Nota
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.
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 è necessario registrare in SQL Server i dati per la connessione e le informazioni sull'origine dei dati. Dopo la registrazione sarà possibile fare riferimento all'origine dati con un singolo nome logico.
Per gestire le definizioni dei server collegati è possibile utilizzare stored procedure e viste del catalogo:
Creare una definizione di un server collegato eseguendo
sp_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 Nuovoe quindi 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 composto da quattro parti deve essere nel formato linked_server_name.catalog.schema.object_name.
Nota
È possibile definire un server collegato in modo che punti all'indietro (loopback) al server in cui è stato definito. 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 loopback sono destinati ai test e non sono supportati per molte operazioni, ad esempio le transazioni distribuite.
Server collegati con Istanza gestita di SQL di Azure
I server collegati dell'istanza gestita di SQL di Azure supportano sia l'autenticazione SQL che l'autenticazione con Microsoft Entra ID (in precedenza Azure Active Directory).
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. L'autenticazione con identità gestita può essere usata per consentire agli account di accesso locali di eseguire query sui server collegati remoti. L'autenticazione pass-through consente 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 di Microsoft Entra. L'unico requisito in questo caso prevede l'aggiunta di istanze gestite 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.
MSOLEDBSQL19 e server collegati
Attualmente, MSOLEDBSQL19 impedisce la creazione di server collegati senza crittografia e un certificato attendibile (un certificato autofirmato non è sufficiente). Se sono necessari server collegati, usare la versione supportata esistente di MSOLEDBSQL.