Share via


Configurare l'accesso in sola lettura in una replica di disponibilità (SQL Server)

Per impostazione predefinita, gli accessi in lettura e scrittura e l'accesso con finalità di lettura sono entrambi consentiti alla replica primaria, ma alle repliche secondarie non sono consentite connessioni di un gruppo di disponibilità AlwaysOn. In questo argomento viene illustrato come configurare l'accesso alla connessione su una replica di disponibilità di un gruppo di disponibilità AlwaysOn in SQL Server 2012 tramite SQL Server Management Studio, Transact-SQL o PowerShell.

Per informazioni sulle implicazioni dell'abilitazione dell'accesso in sola lettura per una replica secondaria e per un'introduzione all'accesso alla connessione, vedere Informazioni sull'accesso alla connessione client per le repliche di disponibilità (SQL Server) e Repliche secondarie attive: Repliche secondarie leggibili (Gruppi di disponibilità AlwaysOn).

  • Prima di iniziare:  

    Prerequisiti e restrizioni

    Sicurezza

  • Per configurare l'accesso su una replica di disponibilità utilizzando:  

    SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Completamento: dopo la configurazione dell'accesso in sola lettura per una replica di disponibilità

  • Attività correlate

  • Contenuto correlato

Prima di iniziare

Prerequisiti e restrizioni

  • Per configurare un accesso alla connessione diverso, è necessario essere connessi all'istanza del server che ospita la replica primaria.

Sicurezza

Autorizzazioni

Attività

Autorizzazioni

Per configurare le repliche durante la creazione di un gruppo di disponibilità

Sono necessarie l'appartenenza al ruolo predefinito del server sysadmin e l'autorizzazione server CREATE AVAILABILITY GROUP oppure l'autorizzazione ALTER ANY AVAILABILITY GROUP o CONTROL SERVER.

Per modificare una replica di disponibilità

È richiesta l'autorizzazione ALTER AVAILABILITY GROUP per il gruppo di disponibilità e l'autorizzazione CONTROL AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP o CONTROL SERVER.

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Utilizzo di SQL Server Management Studio

Per configurare l'accesso su una replica di disponibilità

  1. In Esplora oggetti connettersi all'istanza del server che ospita la replica primaria ed espandere l'albero del server.

  2. Espandere il nodo Disponibilità elevata AlwaysOn e il nodo Gruppi di disponibilità.

  3. Fare clic sul gruppo di disponibilità di cui si desidera modificare la replica.

  4. Fare clic con il pulsante destro del mouse sulla replica di disponibilità e scegliere Proprietà.

  5. Nella finestra di dialogo Proprietà replica di disponibilità è possibile modificare l'accesso alla connessione per il ruolo primario e per il ruolo secondario, come segue:

    • Per il ruolo secondario, selezionare un nuovo valore dall'elenco a discesa Secondario leggibile, come segue:

      • No
        Non sono consentite connessioni utente ai database secondari di questa replica. I database non sono disponibili per l'accesso in lettura. Si tratta dell'impostazione predefinita.

      • Sono con finalità di lettura
        Sono consentite solo connessioni in sola lettura ai database secondari di questa replica. Il database o i database secondari sono tutti disponibili per l'accesso in lettura.


      • Sono consentite tutte le connessioni ai database secondari di questa replica, ma solo per l'accesso in lettura. Il database o i database secondari sono tutti disponibili per l'accesso in lettura.

    • Per il ruolo primario, selezionare un nuovo valore dall'elenco a discesa Connessioni in ruolo primario, come segue:

      • Consenti tutte le connessioni
        Sono consentite tutte le connessioni ai database nella replica primaria. Si tratta dell'impostazione predefinita.

      • Consenti connessioni in lettura/scrittura
        Se la proprietà Finalità dell'applicazione è impostata su ReadWrite o se tale proprietà non è impostata, la connessione è consentita. Non sono consentite le connessioni in cui la proprietà di connessione Finalità dell'applicazione è impostata su ReadOnly. In questo modo è possibile impedire la connessione, per errore, di un carico di lavoro con finalità di lettura alla replica primaria da parte dei clienti. Per ulteriori informazioni sulla proprietà di connessione Finalità dell'applicazione, vedere Utilizzo delle parole chiave delle stringhe di connessione con SQL Server Native Client.

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Utilizzo di Transact-SQL

Per configurare l'accesso su una replica di disponibilità

[!NOTA]

Per un esempio di questa procedura, vedere Esempio (Transact-SQL), più avanti in questa sezione.

  1. Connettersi all'istanza del server che ospita la replica primaria.

  2. Se si specifica una replica per un nuovo gruppo di disponibilità, utilizzare l'istruzione CREATE AVAILABILITY GROUP Transact-SQL. Se si aggiunge o modifica una replica di un gruppo di disponibilità esistente, utilizzare l'istruzione ALTER AVAILABILITY GROUP Transact-SQL.

    • Per configurare l'accesso alla connessione per il ruolo secondario, nella clausola ADD REPLICA o MODIFY REPLICA WITH specificare l'opzione SECONDARY_ROLE, come segue:

      SECONDARY_ROLE ( ALLOW_CONNECTIONS = { NO | READ_ONLY | ALL } )

      dove

      • NO
        Non sono consentite connessioni dirette ai database secondari di questa replica. I database non sono disponibili per l'accesso in lettura. Si tratta dell'impostazione predefinita.

      • READ_ONLY
        Sono consentite solo connessioni in sola lettura ai database secondari di questa replica. Il database o i database secondari sono tutti disponibili per l'accesso in lettura.

      • ALL
        Sono consentite tutte le connessioni ai database secondari di questa replica, ma solo per l'accesso in lettura. Il database o i database secondari sono tutti disponibili per l'accesso in lettura.

  3. Per configurare l'accesso alla connessione per il ruolo primario, nella clausola ADD REPLICA o MODIFY REPLICA WITH specificare l'opzione PRIMARY_ROLE, come segue:

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )

    dove

    • READ_WRITE
      Non sono consentite le connessioni in cui la proprietà di connessione Finalità dell'applicazione è impostata su ReadOnly. Se la proprietà Finalità dell'applicazione è impostata su ReadWrite o se tale proprietà non è impostata, la connessione è consentita. Per ulteriori informazioni sulla proprietà di connessione Finalità dell'applicazione, vedere Utilizzo delle parole chiave delle stringhe di connessione con SQL Server Native Client.

    • ALL
      Sono consentite tutte le connessioni ai database nella replica primaria. Si tratta dell'impostazione predefinita.

Esempio (Transact-SQL)

Nell'esempio seguente viene aggiunta una replica secondaria per un gruppo di disponibilità denominato AG2. Viene specificata un'istanza del server autonoma, COMPUTER03\HADR_INSTANCE, per ospitare la nuova replica di disponibilità. Questa replica è configurata per consentire unicamente le connessioni in lettura e scrittura per il ruolo primario e le connessioni con finalità di lettura per il ruolo secondario.

ALTER AVAILABILITY GROUP AG2 
   ADD REPLICA ON 
      'COMPUTER03\HADR_INSTANCE' WITH 
         (
         ENDPOINT_URL = 'TCP://COMPUTER03:7022',
         PRIMARY_ROLE ( ALLOW_CONNECTIONS = READ_WRITE ),
         SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY )
         ); 
GO

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Utilizzo di PowerShell

Per configurare l'accesso su una replica di disponibilità

[!NOTA]

Per un esempio di codice, vedere Esempio (PowerShell), più avanti in questa sezione.

  1. Spostarsi nella directory (cd) dell'istanza del server che ospita la replica primaria.

  2. Quando si aggiunge una replica di disponibilità a un gruppo di disponibilità, utilizzare il cmdlet New-SqlAvailabilityReplica. Quando si modifica una replica di disponibilità esistente, utilizzare il cmdlet Set-SqlAvailabilityReplica. I parametri attinenti sono i seguenti:

    • Per configurare l'accesso alla connessione per il ruolo secondario, specificare il parametro ConnectionModeInSecondaryRolesecondary_role_keyword, dove secondary_role_keyword è uguale a uno dei valori seguenti:

      • AllowNoConnections
        Non è consentita alcuna connessione diretta ai database nella replica secondaria e i database non sono disponibili per l'accesso in lettura. Si tratta dell'impostazione predefinita.

      • AllowReadIntentConnectionsOnly
        Sono consentite solo connessioni ai database nella replica secondaria in cui la proprietà Finalità dell'applicazione è impostata su ReadOnly. Per ulteriori informazioni su questa proprietà, vedere Utilizzo delle parole chiave delle stringhe di connessione con SQL Server Native Client.

      • AllowAllConnections
        Sono consentite tutte le connessioni ai database nella replica secondaria per l'accesso in sola lettura.

    • Per configurare l'accesso alla connessione per il ruolo primario, specificare il parametro ConnectionModeInPrimaryRoleprimary_role_keyword, dove primary_role_keyword è uguale a uno dei valori seguenti:

      • AllowReadWriteConnections
        Non sono consentite le connessioni in cui la proprietà di connessione Finalità dell'applicazione è impostata su ReadOnly. Se la proprietà Finalità dell'applicazione è impostata su ReadWrite o se tale proprietà non è impostata, la connessione è consentita. Per ulteriori informazioni sulla proprietà di connessione Finalità dell'applicazione, vedere Utilizzo delle parole chiave delle stringhe di connessione con SQL Server Native Client.

      • AllowAllConnections
        Sono consentite tutte le connessioni ai database nella replica primaria. Si tratta dell'impostazione predefinita.

    [!NOTA]

    Per visualizzare la sintassi di un cmdlet, utilizzare il cmdlet Get-Help nell'ambiente PowerShell SQL Server 2012. Per ulteriori informazioni, vedere Visualizzazione della Guida di SQL Server PowerShell.

Per impostare e utilizzare il provider PowerShell per SQL Server

Esempio (PowerShell)

Nell'esempio seguente vengono impostati i parametri ConnectionModeInSecondaryRole e ConnectionModeInPrimaryRole su AllowAllConnections.

Set-Location SQLSERVER:\SQL\PrimaryServer\default\AvailabilityGroups\MyAg
$primaryReplica = Get-Item "AvailabilityReplicas\PrimaryServer"
Set-SqlAvailabilityReplica -ConnectionModeInSecondaryRole "AllowAllConnections" ` 
-InputObject $primaryReplica
Set-SqlAvailabilityReplica -ConnectionModeInPrimaryRole "AllowAllConnections" ` 
-InputObject $primaryReplica

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Completamento: Dopo la configurazione dell'accesso in sola lettura per una replica di disponibilità

Accesso in sola lettura a una replica secondaria leggibile.

Fattori che potrebbero influire su trigger e processi dopo un failover

Se sono presenti trigger e processi che avranno esito negativo se vengono eseguiti su una replica secondaria non leggibile o su un database secondario leggibile, è necessario generare script per trigger e processi per effettuare una verifica su una replicato specifica per determinare se il database è un database primario o un database secondario leggibile. Per ottenere queste informazioni, utilizzare la funzione DATABASEPROPERTYEX per restituire la proprietà Updatability del database. Per identificare un database di sola lettura, specificare il valore READ_ONLY come indicato di seguito:

DATABASEPROPERTYEX([db name],’Updatability’) = N’READ_ONLY’

Per identificare un database di lettura/scrittura, specificare il valore READ_WRITE.

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Attività correlate

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Contenuto correlato

Icona freccia utilizzata con il collegamento Torna all'inizio[Torna all'inizio]

Vedere anche

Concetti

Panoramica di Gruppi di disponibilità AlwaysOn (SQL Server)

Repliche secondarie attive: Repliche secondarie leggibili (Gruppi di disponibilità AlwaysOn)

Informazioni sull'accesso alla connessione client per le repliche di disponibilità (SQL Server)