Creazione di server collegati (motore di database di SQL Server)

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. In questo argomento viene illustrato come creare un server collegato e come accedere ai dati da un'altra istanza di SQL Server.

In questo 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

È richiesta l'autorizzazione ALTER ANY LINKED SERVER per il server.

[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

  1. 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.

  2. Nella casella Server collegato della pagina Generale digitare il nome dell'istanza di SQL Server a cui si sta eseguendo il collegamento.

    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.

  3. Nell'area Tipo di server selezionare SQL Server per indicare che il server collegato è un'altra istanza di SQL Server.

  4. 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.

  5. Fare clic su OK.

[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

  1. 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
    
  2. 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.sysdatabases ;
    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]