Creazione di server collegati (Motore di database di SQL Server)
In questo argomento viene illustrato come creare un server collegato e come accedere ai dati da un'altra istanza di SQL Server tramite SQL Server Management Studio o Transact-SQL. La creazione di server collegati consente di utilizzare dati di più origini. Il server collegato non deve essere un'altra istanza di SQL Server, tuttavia si tratta di uno scenario comune.
Contenuto dell'argomento
Prima di iniziare:
Background
Sicurezza
Esempi:
SQL Server Management Studio
Transact-SQL
Completamento: passaggi da effettuare dopo aver creato un server collegato
Background
Un server collegato consente l'accesso a query distribuite ed eterogenee in origini dati OLE DB. Dopo aver creato un server collegato, le query distribuite possono essere eseguite in questo server e consentono di creare un join di tabelle provenienti da più origini dati. Se il server collegato viene definito come un'istanza di SQL Server, è possibile eseguire stored procedure remote.
Le funzionalità e gli argomenti obbligatori del server collegato possono variare in modo significativo. Tra gli esempi contenuti in questo argomento ne viene fornito uno tipico nel quale però non sono descritte tutte le opzioni. Per ulteriori informazioni, vedere sp_addlinkedserver (Transact-SQL).
Sicurezza
Autorizzazioni
Quando si utilizzano istruzioni Transact-SQL è richiesta l'autorizzazione ALTER ANY LINKED SERVER per il server o l'appartenenza nel ruolo predefinito del server setupadmin. Quando si utilizza Management Studio è richiesta l'autorizzazione CONTROL SERVER o l'appartenenza al ruolo predefinito del server sysadmin.
[Torna all'inizio]
Come creare un server collegato
È possibile utilizzare uno degli elementi seguenti:
SQL Server Management Studio
Transact-SQL
Utilizzo di SQL Server Management Studio
Per creare un server collegato a un'altra istanza di SQL Server tramite SQL Server Management Studio
In SQL Server Management Studio aprire Esplora oggetti, espandere Oggetti server, fare clic con il pulsante destro del mouse su Server collegati, quindi Nuovo server collegato.
Nella casella Server collegato della pagina Generale digitare il nome dell'istanza di SQL Server a cui si sta eseguendo il collegamento.
SQL Server
Consente di identificare il server collegato come un'istanza di Microsoft SQL Server. Se per definire un server SQL Server collegato si utilizza questo metodo, il nome specificato in Server collegato deve essere quello di rete del server. Inoltre, le eventuali tabelle recuperate dal server provengono dal database predefinito impostato per l'account di accesso del server collegato.Altra origine dati
Specificare un tipo di server OLE DB diverso da SQL Server. La selezione di questa opzione determina l'attivazione delle opzioni sottostanti.Provider
Consente di selezionare un'origine dati OLE DB nella casella di riepilogo. Il provider OLE DB viene registrato nel Registro di sistema con il valore PROGID specificato.Nome prodotto
Consente di specificare il nome del prodotto dell'origine dati OLE DB da aggiungere come server collegato.Origine dati
Consente di digitare il nome dell'origine dati in base alla modalità di interpretazione del provider OLE DB. Se ci si connette a un'istanza di SQL Server, specificare il nome dell'istanza.Stringa provider
Digitare il ProgID univoco del provider OLE DB che corrisponde all'origine dati. Per esempi di stringhe di provider valide, vedere sp_addlinkedserver (Transact-SQL).Percorso
Digitare la posizione del database secondo la modalità di interpretazione del provider OLE DB.Catalogo
Digitare il nome del catalogo da utilizzare durante la connessione al provider OLE DB.
Per verificare la possibilità di eseguire una connessione a un server collegato, in Esplora oggetti fare clic con il pulsante destro del mouse sul server collegato, quindi scegliere Test connessione.
[!NOTA]
Se l'istanza di SQL Server è quella predefinita, immettere il nome del computer che ospita l'istanza di SQL Server. Se l'istanza di SQL Server è un'istanza denominata, immettere il nome del computer e il nome dell'istanza, ad esempio Contabilità\SQLExpress.
Nell'area Tipo di server selezionare SQL Server per indicare che il server collegato è un'altra istanza di SQL Server.
Nella pagina Sicurezza specificare il contesto di sicurezza che verrà utilizzato quando la connessione al server collegato viene eseguita dall'istanza originale di SQL Server. In un ambiente di dominio in cui gli utenti eseguono la connessione tramite account di dominio personalizzati, la selezione di Verranno effettuate con il contesto di sicurezza corrente dell'account di accesso è spesso la soluzione migliore. Quando gli utenti eseguono la connessione all'istanza originale di SQL Server utilizzando un account di accesso di SQL Server, la scelta ottimale spesso consiste nel selezionare Verranno effettuate con il contesto di sicurezza seguente, quindi fornendo le credenziali necessarie per l'autenticazione nel server collegato.
Account di accesso locale
Consente di specificare l'ID di accesso locale con cui è possibile connettersi al server collegato. L'account di accesso locale può essere un account basato sull'autenticazione di SQL Server o un account basato sull'autenticazione di Windows. Utilizzare questo elenco per limitare la connessione a determinati account di accesso o per consentire ad alcuni account di connettersi con un account di accesso diverso.Rappresenta
Consente di passare il nome utente e la password dall'account di accesso locale al server collegato. Nel caso dell'autenticazione di SQL Server, è necessario che nel server remoto esista un account di accesso con un nome e una password identici. Nel caso degli account di accesso Windows, è necessario che l'account di accesso sia valido nel server collegato.Per utilizzare la funzionalità di rappresentazione, è indispensabile che la configurazione risponda ai requisiti per la delega.
Utente remoto
Utilizzare l'utente remoto per eseguire il mapping di utenti non definiti in Account di accesso locale. L'Utente remoto deve essere un account di accesso basato sull'autenticazione di SQL Server nel server remoto.Password remota
Consente di specificare la password dell'Utente remoto.Aggiungi
Consente di aggiungere un nuovo account di accesso locale.Rimuovi
Consente di rimuovere un account di accesso locale esistente.Non verranno effettuate
Consente di specificare che non verrà effettuata una connessione per gli account di accesso non definiti nell'elenco.Verranno effettuate senza un contesto di sicurezza
Consente di specificare che verrà effettuata una connessione senza un contesto di sicurezza per gli account di accesso non definiti nell'elenco.Verranno effettuate con il contesto di sicurezza corrente dell'account di accesso
Consente di specificare che verrà effettuata una connessione con il contesto di sicurezza corrente dell'account di accesso per gli account di accesso non definiti nell'elenco. Se la connessione al server locale è stata effettuata utilizzando l'autenticazione di Windows, per la connessione al server remoto verranno utilizzate le credenziali di Windows. Se la connessione al server locale è stata effettuata utilizzando l'autenticazione di SQL Server, per la connessione al server remoto verranno utilizzati il nome e la password dell'account di accesso. In tal caso, è necessario che nel server remoto esista un account di accesso con un nome e una password identici.Verranno effettuate con il contesto di sicurezza seguente
Consente di specificare che verrà effettuata una connessione utilizzando l'account di accesso e la password specificati in Account di accesso remoto e Password per gli account di accesso non definiti nell'elenco. L'account di accesso remoto deve essere un account di accesso basato sull'autenticazione di SQL Server nel server remoto.
Facoltativamente, visualizzare o specificare opzioni server, fare clic sulla pagina Opzioni server.
Regole di confronto compatibili
Influisce sull'esecuzione delle query distribuite in server collegati. Se questa opzione è impostata su true, SQL Server considera tutti i caratteri del server collegato compatibili con il server locale, relativamente al set di caratteri e alla sequenza delle regole di confronto oppure al tipo di ordinamento. Ciò consente a SQL Server di inviare al provider i confronti per colonne di tipo carattere. Se questa opzione non è impostata, SQL Server valuta sempre i confronti per le colonne di tipo carattere localmente.Impostare questa opzione solo se nell'origine dei dati corrispondente al server collegato il set di caratteri e il tipo di ordinamento corrispondono a quelli del server locale.
Accesso ai dati
Consente di abilitare e disabilitare un server collegato per l'accesso a query distribuite.RPC
Abilita l'esecuzione di chiamate RPC dal server specificato.Chiamate RPC in uscita
Abilita l'esecuzione di chiamate RPC al server specificato.Usa regole di confronto remote
Determina se vengono utilizzate le regole di confronto di una colonna remota o di un server locale.Se è true, per le origini dei dati di SQL Server vengono adottate le regole di confronto delle colonne remote, mentre le regole di confronto specificate nel nome delle regole di confronto vengono utilizzate per origini dei dati diverse da SQL Server.
Se è false, per le query distribuite vengono sempre utilizzate le regole di confronto predefinite del server locale, mentre il nome delle regole di confronto e le regole di confronto delle colonne remote vengono ignorati. Il valore predefinito è false.
Nome regole di confronto
Consente di specificare il nome delle regole di confronto utilizzate dall'origine dei dati remota quando l'opzione Usa regole di confronto remote è true e l'origine dei dati non è un'origine dei dati di SQL Server. È necessario specificare il nome di uno dei set di regole di confronto supportate da SQL Server.Utilizzare questa opzione per accedere a un'origine dei dati OLE DB diversa da SQL Server che utilizza regole di confronto di SQL Server.
Il server collegato deve supportare regole di confronto singole da utilizzare per tutte le colonne del server. Non impostare questa opzione quando il server collegato supporta più regole di confronto nella stessa origine dei dati oppure non è possibile stabilire se le regole di confronto del server collegato corrispondono a una delle regole di confronto di SQL Server.
Timeout connessione
Valore di timeout espresso in secondi per la connessione al server collegato.Se 0, utilizzare il valore predefinito sp_configure dell'opzione remote query timeout.
Timeout query
Valore di timeout espresso in secondi per le query eseguite nel server collegato.Se 0, utilizzare il valore predefinito sp_configure dell'opzione query wait.
Abilita promozione delle transazioni distribuite
Questa opzione consente di proteggere le azioni di una procedura da server a server tramite una transazione MS DTC (Microsoft Distributed Transaction Coordinator). Quando questa opzione è impostata su TRUE, la chiamata di una stored procedure remota comporta l'avvio di una transazione distribuita e l'integrazione della transazione in MS DTC. Per ulteriori informazioni, vedere sp_serveroption (Transact-SQL).
Fare clic su OK.
Per visualizzare le opzioni del provider
Per visualizzare le opzioni rese disponibili dal provider, fare clic sulla pagina Opzioni provider.
Non tutti i provider dispongono delle stesse opzioni. Ad esempio, alcuni tipi di dati, a differenza di altri, dispongono di indici. Utilizzare questa finestra di dialogo per consentire a SQL Server di capire le funzionalità del provider. SQL Server installa alcuni provider di dati comuni; tuttavia, quando il prodotto che fornisce i dati cambia, il provider installato da SQL Server potrebbe non supportare tutte le funzionalità nuove. La migliore fonte di informazioni sulle funzionalità del prodotto che fornisce i dati è la documentazione di quel prodotto.
Parametro dinamico
Indica che il provider consente l'utilizzo della sintassi con il marcatore di parametro "?" nel caso di query con parametri. Impostare questa opzione solo se il provider supporta l'interfaccia ICommandWithParameters e "?" come marcatore di parametro. L'impostazione di questa opzione consente a SQL Server di eseguire query con parametri sul provider. In determinati casi, la possibilità di eseguire query con parametri sul provider può determinare un miglioramento delle prestazioni.Query nidificate
Indica che il provider supporta le istruzioni SELECT nidificate nella clausola FROM. L'impostazione di questa opzione consente a SQL Server di delegare al provider le query che richiedono la nidificazione di istruzioni SELECT nella clausola FROM.Solo livello zero
Indica che sul provider vengono richiamate solo le interfacce OLE DB di livello 0.Consenti in-process
Indica che SQL Server consente la creazione di un'istanza del provider come server in-process. Se questa opzione non viene impostata, per impostazione predefinita viene creata un'istanza del provider al di fuori del processo di SQL Server. La creazione di un'istanza del provider al di fuori del processo di SQL Server consente di proteggere il processo di SQL Server dagli errori che si verificano nel provider. Quando l'istanza del provider viene creata al di fuori del processo di SQL Server, gli aggiornamenti o gli inserimenti che fanno riferimento a colonne per valori di grandi dimensioni (text, ntext o image) non sono consentiti.Aggiornamenti non in transazioni
Indica che SQL Server consente gli aggiornamenti anche se ITransactionLocal non è disponibile. Se questa opzione è abilitata, gli aggiornamenti sul provider non sono recuperabili poiché il provider non supporta le transazioni.Indici come percorso di accesso
Indica che SQL Server tenta di utilizzare gli indici del provider per recuperare i dati. Per impostazione predefinita, gli indici vengono utilizzati solo per i metadati e non vengono mai apertiAccesso ad hoc non consentito
Indica che SQL Server non consente l'accesso ad hoc tramite le funzioni OPENROWSET e OPENDATASOURCE sul provider OLE DB. SQL Server non consente l'accesso ad hoc anche se questa opzione non è impostata.Supporta l'operatore 'Like'
Indica che il provider supporta le query che utilizzano la parola chiave LIKE.
[Torna all'inizio]
Utilizzo di Transact-SQL
Per creare un server collegato tramite Transact-SQL, utilizzare le istruzioni sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL) e sp_addlinkedsrvlogin (Transact-SQL).
Per creare un server collegato a un'altra istanza di SQL Server tramite Transact-SQL
Nell'Editor query immettere il comando Transact-SQL seguente per il collegamento a un'istanza di SQL Server denominata SRVR002\ACCTG:
USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct=N'SQL Server' ; GO
Eseguire il codice riportato di seguito per configurare il server collegato in modo da utilizzare le credenziali di dominio dell'account di accesso utilizzate dal server collegato.
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SRVR002\ACCTG', @locallogin = NULL , @useself = N'True' ; GO
[Torna all'inizio]
Completamento: passaggi da effettuare dopo aver creato un server collegato
Per testare il server collegato
Eseguire il codice riportato di seguito per testare la connessione al server collegato. In questo esempio vengono restituiti i nomi dei database nel server collegato.
SELECT name FROM [SRVR002\ACCTG].master.sys.databases ; GO
Scrittura di una query che consente creare un join di tabelle di un server collegato
Utilizzare nomi in quattro parti per fare riferimento a un oggetto in un server collegato. Eseguire il codice riportato di seguito per restituire un elenco di tutti gli account di accesso nel server locale e i relativi account di accesso corrispondenti nel server collegato.
SELECT local.name AS LocalLogins, linked.name AS LinkedLogins FROM master.sys.server_principals AS local LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked ON local.name = linked.name ; GO
Quando viene restituito NULL per l'account di accesso del server collegato, tale account di accesso non è presente nel server collegato. Questi account di accesso non potranno essere utilizzati dal server collegato a meno tale server non sia configurato per passare un contesto di sicurezza differente oppure il server collegato accetta connessioni anonime.
[Torna all'inizio]
Vedere anche
Riferimento
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)