Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento illustra come creare un server collegato e accedere ai dati da un altro 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 si tratta di uno scenario comune.
Sfondo
Un server collegato consente di accedere a query distribuite e eterogenee contro 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. Gli esempi in questo argomento forniscono un esempio tipico, ma tutte le opzioni non sono descritte. Per altre informazioni, vedere sp_addlinkedserver (Transact-SQL).
Sicurezza
Autorizzazioni
Quando si usano istruzioni Transact-SQL, è richiesta l'autorizzazione ALTER ANY LINKED SERVER sul server oppure è necessaria l'appartenenza al ruolo server predefinito setupadmin. Quando si usa Management Studio è richiesta CONTROL SERVER l'autorizzazione o l'appartenenza al ruolo predefinito del server sysadmin .
Come creare un server collegato
È possibile usare uno dei seguenti elementi:
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 esegue il collegamento.
SQL Server
Identificare il server collegato come istanza di Microsoft SQL Server. Se si usa questo metodo per definire un server collegato di SQL Server, il nome specificato in 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.Fonte 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).Ubicazione
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 testare la possibilità di connettersi a un server collegato, in Esplora oggetti fare clic con il pulsante destro del mouse sul server collegato e quindi scegliere Test connessione.
Annotazioni
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 SQL Server originale si connette al server collegato. In un ambiente di dominio in cui gli utenti si connettono utilizzando i loro accessi al dominio, selezionare le connessioni verranno effettuate con il contesto di sicurezza corrente dell'accesso è spesso la scelta 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 Utilizzando questo contesto di sicurezza, fornendo quindi le credenziali necessarie per l'autenticazione nel server collegato.
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 di accesso usando l'autenticazione di SQL Server o un account di accesso con 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.Impersonare
Consente di passare il nome utente e la password dall'account di accesso locale al server collegato. Per l'autenticazione di SQL Server, un account di accesso con lo stesso nome e la stessa password devono esistere nel server remoto. 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 degli utenti non definiti nell'account di accesso locale. L'utente remoto deve essere un login di autenticazione SQL Server nel server remoto.Password remota
Consente di specificare la password dell'Utente remoto.Aggiunta
Aggiungere un nuovo account di accesso locale.Rimuovi
Rimuovere un account di accesso locale esistente.Non verranno effettuate
Specificare che non verrà stabilita una connessione per gli account di accesso non definiti nell'elenco.Verranno effettuate senza un contesto di sicurezza
Specificare che verrà stabilita una connessione senza usare un contesto di sicurezza per gli account di accesso non definiti nell'elenco.Effettuate usando il contesto di sicurezza corrente del login
Specificare che si stabilirà una connessione utilizzando il contesto di sicurezza attuale dell'accesso per gli accessi non definiti nell'elenco. Se si è connessi al server locale usando l'autenticazione di Windows, le credenziali di Windows verranno usate per connettersi al server remoto. 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 questo caso, un account di accesso con lo stesso nome e la stessa password devono esistere nel server remoto.Verranno effettuate con il contesto di sicurezza seguente
Specificare che verrà stabilita una connessione usando l'account di accesso e la password specificati nelle caselle Accesso remoto e Con password per gli account di accesso non definiti nell'elenco. L'account di accesso remoto deve utilizzare l'autenticazione SQL Server sul 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 caratteri. Se questa opzione non è impostata, SQL Server valuta sempre i confronti sulle colonne di caratteri in locale.Questa opzione deve essere impostata solo se è certo che l'origine dati corrispondente al server collegato abbia lo stesso set di caratteri e l'ordinamento del server locale.
Accesso ai dati
Consente di attivare e disabilitare un server collegato per l'accesso a query distribuite.RPC
Abilita RPC dal server specificato.RPC in uscita
Viene abilitata l'esecuzione di chiamate RPC al server specificato.Usa collazione remota
Determina se la collation di una colonna remota o di un server locale verrà utilizzata.Se è vero, 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 nome di confronto specificato.
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 collazione
Specifica il nome delle regole di confronto usate dall'origine dati remota se l'uso delle regole di confronto remote è true e l'origine dati non è un'origine dati 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 all'interno di una singola origine dati o se le regole di confronto del server collegato non possono essere determinate in modo che corrispondano a una delle regole di confronto di SQL Server.
Timeout della connessione
Valore di timeout espresso in secondi per la connessione al server collegato.Se il valore è 0, utilizzare il valore di default dell'opzione timeout di accesso remoto di sp_configure.
Query timeout
Valore di timeout espresso in secondi per le query eseguite nel server collegato.Se pari a 0, utilizzare il valore predefinito dell'opzione timeout query remota di sp_configure.
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 disponibili dal provider, fare clic sulla pagina Opzioni provider .
Tutti i provider non dispongono delle stesse opzioni disponibili. 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 "?" per le query parametrizzate. 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 consente istruzioniSELECTnidificate 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
Vengono richiamate solo le interfacce OLE DB di livello 0 sul provider.Consenti in processo
SQL Server consente la creazione di un'istanza del provider come server In-Process. Quando questa opzione non è impostata, il comportamento predefinito consiste nel creare un'istanza del provider all'esterno 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 istanziato all'esterno del processo di SQL Server, gli aggiornamenti o gli inserimenti che si riferiscono a colonne lunghe (text,ntext, oimage) non sono consentiti.Aggiornamenti non confermati
SQL Server consente gli aggiornamenti, anche se ITransactionLocal non è disponibile. Se questa opzione è abilitata, gli aggiornamenti sul provider non sono recuperabili perché 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 apertiNon consentire l'accesso ad hoc
SQL Server non consente l'accesso ad hoc tramite le funzioni OPENROWSET e OPENDATASOURCE sul provider OLE DB. Quando questa opzione non è impostata, SQL Server non consente anche l'accesso ad hoc.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 tramite 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 usando 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' ; GOEseguire 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 seguente 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 unisce tabelle da 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 ; GOQuando viene restituito NULL per l'account di accesso al server collegato, indica che l'account di accesso non esiste nel server collegato. Questi account di accesso non potranno usare il server collegato a meno che il server collegato non sia configurato per passare un contesto di sicurezza diverso o che il server collegato accetti connessioni anonime.
Vedere anche
Server collegati (Motore di database)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)