Server collegati (Motore di database)Linked Servers (Database Engine)

Configurare un server collegato per consentire a Motore di database di SQL ServerSQL Server Database Engine di eseguire comandi su origini dati OLE DB all'esterno dell'istanza di SQL ServerSQL Server.Configure a linked server to enable the Motore di database di SQL ServerSQL Server Database Engine to execute commands against OLE DB data sources outside of the instance of SQL ServerSQL Server. In genere i server collegati sono configurati per consentire a Motore di databaseDatabase Engine di eseguire l'istruzione Transact-SQLTransact-SQL che include tabelle in un'altra istanza di SQL ServerSQL Servero un altro prodotto del database quale Oracle.Typically linked servers are configured to enable the Motore di databaseDatabase Engine to execute a Transact-SQLTransact-SQL statement that includes tables in another instance of SQL ServerSQL Server, or another database product such as Oracle. Molti tipi di origini dati OLE DB possono essere configurati come server collegati, incluso Access e Excel MicrosoftMicrosoft .Many types OLE DB data sources can be configured as linked servers, including MicrosoftMicrosoft Access and Excel. I server collegati offrono i vantaggi riportati di seguito:Linked servers offer the following advantages:

  • Possibilità di accedere ai dati dall'esterno di SQL ServerSQL Server.The ability to access data from outside of SQL ServerSQL Server.

  • Possibilità di eseguire query distribuite, aggiornamenti, comandi e transazioni su origini dati eterogenee in tutta l'azienda.The ability to issue distributed queries, updates, commands, and transactions on heterogeneous data sources across the enterprise.

  • Possibilità di utilizzare origini dati diverse in modo analogo.The ability to address diverse data sources similarly.

    È possibile configurare un server collegato usando SQL Server Management StudioSQL Server Management Studio o l'istruzione sp_addlinkedserver (Transact-SQL) .You can configure a linked server by using SQL Server Management StudioSQL Server Management Studio or by using the sp_addlinkedserver (Transact-SQL) statement. I provider OLE DB variano in modo sostanziale nel tipo e nel numero di parametri richiesti.OLE DB providers vary greatly in the type and number of parameters required. Ad esempio alcuni provider richiedono di fornire un contesto di sicurezza per la connessione usando sp_addlinkedsrvlogin (Transact-SQL).For example some providers require you to provide a security context for the connection using sp_addlinkedsrvlogin (Transact-SQL). Alcuni provider OLE DB consentono a SQL ServerSQL Server di aggiornare i dati sull'origine OLE DB.Some OLE DB providers allow SQL ServerSQL Server to update data on the OLE DB source. Altri forniscono accesso soltanto ai dati di sola lettura.Others provide only read-only data access. Per informazioni su ogni provider OLE DB, consultare la documentazione relativa a detto provider OLE DB.For information about each OLE DB provider, consult documentation for that OLE DB provider.

Componenti di un server collegatoLinked Server Components

Nella definizione di un server collegato sono specificati gli oggetti seguenti:A linked server definition specifies the following objects:

  • Un provider OLE DBAn OLE DB provider

  • Un'origine dei dati OLE DBAn OLE DB data source

    Un provider OLE DB è una DLL in grado di gestire un'origine dei dati specifica e interagire con essa.An OLE DB provider is a DLL that manages and interacts with a specific data source. Un' origine dei dati OLE DB identifica lo specifico database a cui è possibile accedere con OLE DB.An OLE DB data source identifies the specific database that can be accessed through 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 un'ampia gamma di file e formati di file,Although data sources queried through linked server definitions are ordinarily databases, OLE DB providers exist for a variety of files and file formats. quali file di testo, dati di fogli di calcolo e risultati di ricerche di contenuto full-text.These include text files, spreadsheet data, and the results of full-text content searches.

    Il provider OLE DB di MicrosoftMicrosoft SQL ServerSQL Server Native Client (PROGID: SQLNCLI11) è il provider OLE DB ufficiale per SQL ServerSQL Server.The MicrosoftMicrosoft SQL ServerSQL Server Native Client OLE DB Provider (PROGID: SQLNCLI11) is the official OLE DB provider for SQL ServerSQL Server.

Nota

SQL ServerSQL Server Le query distribuite sono progettate per funzionare con qualsiasi provider OLE DB che implementi le interfacce OLE DB necessarie. distributed queries are designed to work with any OLE DB provider that implements the required OLE DB interfaces. SQL ServerSQL Server è stato tuttavia testato solo con il provider OLE DB di SQL ServerSQL Server Native Client e con alcuni altri provider.However, SQL ServerSQL Server has been tested against only the SQL ServerSQL Server Native Client OLE DB Provider and certain other providers.

Dettagli relativi ai server collegatiLinked Server Details

Nella figura seguente vengono illustrati i componenti di base di una configurazione con server collegati.The following illustration shows the basics of a linked server configuration.

Livello client, livello server e livello server di databaseClient tier, server tier, and database server tier

I server collegati vengono in genere utilizzati per la gestione delle query distribuite.Typically, linked servers are used to handle distributed queries. Quando un'applicazione client esegue una query distribuita tramite un server collegato, SQL ServerSQL Server analizza il comando e invia le richieste a OLE DB.When a client application executes a distributed query through a linked server, SQL ServerSQL Server parses the command and sends requests to OLE DB. È possibile richiedere l'esecuzione di una query sul provider o l'apertura di una tabella di base dal provider.The rowset request may be in the form of executing a query against the provider or opening a base table from the 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 ServerSQL Server.For a data source to return data through a linked server, the OLE DB provider (DLL) for that data source must be present on the same server as the instance of SQL ServerSQL Server.

Quando viene utilizzato un provider OLE DB di terze parti, l'account con cui viene eseguito il servizio SQL ServerSQL Server deve disporre di autorizzazioni di lettura ed esecuzione per la directory, e tutte le sottodirectory, in cui è installato il provider.When a third-party OLE DB provider is used, the account under which the SQL ServerSQL Server service runs must have read and execute permissions for the directory, and all subdirectories, in which the provider is installed.

Gestione dei providerManaging Providers

È disponibile un set di opzioni che consente di controllare la modalità con cui SQL ServerSQL Server carica e utilizza i provider OLE DB specificati nel Registro di sistema.There is a set of options that control how SQL ServerSQL Server loads and uses OLE DB providers that are specified in the registry.

Gestione delle definizioni dei server collegatiManaging Linked Server Definitions

Quando si configura un server collegato è necessario registrare in SQL ServerSQL Serveri dati per la connessione e le informazioni sull'origine dei dati.When you are setting up a linked server, register the connection information and data source information with SQL ServerSQL Server. Dopo la registrazione sarà possibile fare riferimento all'origine dei dati utilizzando un singolo nome logico.After registered, that data source can be referred to with a single logical name.

Per gestire le definizioni dei server collegati è possibile utilizzare stored procedure e viste del catalogo:You can use stored procedures and catalog views to manage linked server definitions:

  • Creare una definizione di un server collegato eseguendo sp_addlinkedserver.Create a linked server definition by running sp_addlinkedserver.

  • Per visualizzare informazioni sui server collegati definiti in una specifica istanza di SQL ServerSQL Server , eseguire una query sulle viste del catalogo di sistema sys.servers .View information about the linked servers defined in a specific instance of SQL ServerSQL Server by running a query against the sys.servers system catalog views.

  • Eliminare la definizione di un server collegato eseguendo sp_dropserver.Delete a linked server definition by running sp_dropserver. Questa stored procedure può essere utilizzata anche per rimuovere un server remoto.You can also use this stored procedure to remove a remote server.

    Per definire i server collegati è inoltre possibile utilizzare SQL Server Management StudioSQL Server Management Studio.You can also define linked servers by using SQL Server Management StudioSQL Server Management Studio. In Esplora oggetti fare clic con il pulsante destro del mouse su Oggetti server, scegliere Nuovoe quindi Server collegato.In the Object Explorer, right-click Server Objects, select New, and select Linked Server. 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.You can delete a linked server definition by right-clicking the linked server name and selecting Delete.

    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.When you execute a distributed query against a linked server, include a fully qualified, four-part table name for each data source to query. Questo nome composto da quattro parti deve essere nel formato linked_server_name.catalog.schema.object_name.This four-part name should be in the form 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.Linked servers can be defined to point back (loop back) to the server on which they are defined. 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.Loopback servers are most useful when testing an application that uses distributed queries on a single server network. I server collegati di loopback sono destinati ai test e non sono supportati per molte operazioni, ad esempio le transazioni distribuite.Loopback linked servers are intended for testing and are not supported for many operations, such as distributed transactions.

Creare server collegati (Motore di database di SQL Server)Create Linked Servers (SQL Server Database Engine)

sp_addlinkedserver (Transact-SQL)sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)sp_addlinkedsrvlogin (Transact-SQL)

sp_dropserver (Transact-SQL)sp_dropserver (Transact-SQL)

sys.servers (Transact-SQL)sys.servers (Transact-SQL)

sp_linkedservers (Transact-SQL)sp_linkedservers (Transact-SQL)