Creazione di server collegati (Motore di database di SQL Server)
Questo argomento illustra come creare un server collegato e accedere ai dati da un'altra SQL Server usando 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, ma questo è uno scenario comune.
Sfondo
il quale 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 è definito come 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 altre informazioni, vedere sp_addlinkedserver (Transact-SQL).
Sicurezza
Autorizzazioni
Quando si usano istruzioni Transact-SQL, è necessaria ALTER ANY LINKED SERVER
l'autorizzazione per il server o l'appartenenza al ruolo predefinito del server setupadmin . Quando si usa Management Studio richiede CONTROL SERVER
l'autorizzazione o l'appartenenza al ruolo predefinito del server sysadmin .
Come creare un server collegato
È possibile utilizzare uno degli elementi seguenti:
Uso 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 e quindi scegliere 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
Identificare il server collegato come istanza di MicrosoftSQL Server. Se si usa questo metodo per definire un server collegato SQL Server, il nome specificato nel server collegato deve essere il nome 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 provider valide, vedere sp_addlinkedserver (Transact-SQL).Posizione
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à usato quando l'SQL Server originale si connette al server collegato. 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 basato sull'autenticazione di SQL Server o 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.Impersonate
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
Usare 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.Aggiungere
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 usando l'autenticazione di SQL Server, per la connessione al server remoto verranno usati 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 basato sull'autenticazione di SQL Server nel server remoto.Facoltativamente, per visualizzare o specificare le opzioni del 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 attivare e disabilitare un server collegato per l'accesso a query distribuite.RPC
Attiva l'esecuzione di chiamate RPC dal server specificato.Chiamate RPC in uscita
Viene abilitata 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 dati di SQL Server vengono usate le regole di confronto delle colonne remote, mentre per le origini dati non di SQL Server vengono usate le regole di confronto specificate nel relativo nome.
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 usate dall'origine dati remota quando l'opzione Usa regole di confronto remote è true e l'origine dati non è di SQL Server. È necessario specificare il nome di uno dei set di regole di confronto supportate da SQL Server.Usare questa opzione per accedere a un'origine dei dati OLE DB diversa da SQL Server ma le cui regole di confronto corrispondono a una delle 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 se il server collegato supporta più regole di confronto nella stessa origine dati oppure se non è possibile stabilire se le regole di confronto del server collegato corrispondono a una delle regole di confronto di SQL Server.
Connection Timeout
Valore di timeout espresso in secondi per la connessione al server collegato.Se il valore è 0, usare il valore predefinito sp_configure dell'opzione remote login timeout .
Timeout query
Valore di timeout espresso in secondi per le query eseguite nel server collegato.Se 0, usare il valore predefinito sp_configure dell'opzione remote query timeout .
Abilita promozione delle transazioni distribuite
Usare questa opzione per 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 altre 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. Usare questa finestra di dialogo per consentire a SQL Server di riconoscere 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à più recenti. 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 istruzioniSELECT
nidificate nella clausola FROM. L'impostazione di questa opzione consente a SQL Server di delegare al provider specifiche query che richiedono l'annidamento 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
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 all'esterno del processo di SQL Server protegge il processo stesso dagli errori del provider. Quando il provider viene creato un'istanza all'esterno del processo di SQL Server, gli aggiornamenti o gli inserimenti che fanno riferimento a colonne lunghe (text
,ntext
o )image
non sono consentite.Aggiornamenti non in transazioni
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
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
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.
Uso di Transact-SQL
Per creare un server collegato usando Transact-SQL, usare 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
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.
Vedere anche
Server collegati (Motore di database)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)