Настройка доступа только для чтения в реплике доступности (SQL Server)

По умолчанию и доступ для чтения и записи, и доступ только для чтения разрешены в первичной реплике, а подключения к вторичным репликам группы доступности AlwaysOn запрещены. В этом разделе описывается настройка доступа к соединениям реплики доступности в группе доступности AlwaysOn в SQL Server 2012 с помощью Среда SQL Server Management Studio, Transact-SQL или PowerShell.

Сведения о последствиях включения доступа только для чтения во вторичной реплике и обзор доступа к соединениям см. в разделах Сведения о доступе клиентского соединения с репликами доступности (SQL Server) и Активные вторичные реплики: Доступ к вторичным репликам только для чтения (группы доступности AlwaysOn).

  • Перед началом работы  

    Требования и ограничения

    Безопасность

  • Настройка доступа к реплике доступности с использованием:  

    Среда SQL Server Management Studio

    Transact-SQL

    PowerShell

  • Дальнейшие действия.  После настройки доступа только для чтения для реплики доступности

  • Связанные задачи

  • См. также

Перед началом работы

Требования и ограничения

  • Если нужно настроить разный доступ к подключениям, необходимо подключиться к экземпляру сервера, на котором размещается первичная реплика.

Безопасность

Разрешения

Задача

Разрешения

Настройка реплик при создании группы доступности

Требуется членство в предопределенной роли сервера sysadmin и разрешение сервера CREATE AVAILABILITY GROUP, ALTER ANY AVAILABILITY GROUP или CONTROL SERVER.

Изменение реплики доступности

Необходимо разрешение ALTER AVAILABILITY GROUP для группы доступности, разрешение CONTROL AVAILABILITY GROUP, разрешение ALTER ANY AVAILABILITY GROUP или разрешение CONTROL SERVER.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование среды SQL Server Management Studio

Настройка доступа к реплике доступности

  1. В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена первичная реплика, и разверните дерево сервера.

  2. Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности.

  3. Щелкните группу доступности, реплику которой нужно изменить.

  4. Щелкните правой кнопкой мыши реплику доступности и выберите пункт Свойства.

  5. В диалоговом окне Свойства реплики доступности можно изменить доступ к соединению для первичной и вторичной роли следующим образом:

    • Для вторичной роли выберите новое значение в раскрывающемся списке Доступная для чтения вторичная следующим образом.

      • Нет
        Для баз данных-получателей этой реплики соединения пользователя не разрешаются. Для них не разрешен доступ для чтения. Это параметр по умолчанию.

      • С назначением только чтения
        Для баз данных-получателей этой реплики разрешены лишь подключения только для чтения. Для всех баз данных-получателей разрешен доступ для чтения.

      • Да
        Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.

    • Для первичной роли выберите новое значение в раскрывающемся списке Соединения в первичной роли следующим образом:

      • Разрешить все соединения
        Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.

      • Разрешены соединения с доступом на чтение и на запись
        Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Соединения, у которых свойство соединения «Назначение приложения» равно ReadOnly, не разрешены. Таким образом, клиент не сможет по ошибке подключить рабочую нагрузку с намерением чтения к первичной реплике. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование Transact-SQL

Настройка доступа к реплике доступности

ПримечаниеПримечание

Пример этой процедуры см. в подразделе Примеры (Transact-SQL) далее в этом разделе.

  1. Подключитесь к экземпляру сервера, на котором находится первичная реплика.

  2. Если вы указываете реплику для новой группы доступности, воспользуйтесь инструкцией CREATE AVAILABILITY GROUP Transact-SQL. Если вы добавляете или изменяете реплику существующей группы доступности, воспользуйтесь инструкцией ALTER AVAILABILITY GROUP Transact-SQL.

    • Чтобы настроить доступ к соединению для вторичной роли, укажите в предложении ADD REPLICA или MODIFY REPLICA WITH параметр SECONDARY_ROLE следующим образом:

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

      Здесь:

      • NO
        Прямые подключения для баз данных-получателей этой реплики не разрешаются. Для них не разрешен доступ для чтения. Это параметр по умолчанию.

      • READ_ONLY
        Для баз данных-получателей этой реплики разрешены лишь подключения только для чтения. Для всех баз данных-получателей разрешен доступ для чтения.

      • ALL
        Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.

  3. Чтобы настроить доступ к соединению для первичной роли, укажите в предложении ADD REPLICA или MODIFY REPLICA WITH параметр PRIMARY_ROLE следующим образом:

    PRIMARY_ROLE ( ALLOW_CONNECTIONS = { READ_WRITE | ALL } )

    Здесь:

    • READ_WRITE
      Соединения, у которых свойство «Назначение приложения» равно ReadOnly, не разрешены. Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

    • ALL
      Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.

Пример (Transact-SQL)

В следующем примере добавляется вторичная реплика в группу доступности с именем AG2. Изолированный экземпляр сервера COMPUTER03\HADR_INSTANCE указывается для размещения новой реплики доступности. В этой реплике разрешены только соединения для чтения и записи для первичной роли, а для вторичной роли разрешены соединения с намерением чтения.

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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Использование PowerShell

Настройка доступа к реплике доступности

ПримечаниеПримечание

Пример кода см. в подразделе Пример (PowerShell) далее в этом разделе.

  1. Перейдите в каталог (cd) экземпляра сервера, на котором находится первичная реплика.

  2. При добавлении реплики доступности в группу доступности воспользуйтесь командлетом New-SqlAvailabilityReplica. При изменении существующей реплики доступности воспользуйтесь командлетом Set-SqlAvailabilityReplica. Соответствующие параметры:

    • Чтобы настроить доступ к соединению для вторичной роли, укажите параметр ConnectionModeInSecondaryRole secondary_role_keyword, где secondary_role_keyword равно одному из следующих значений:

      • AllowNoConnections
        Не допускаются прямые соединения с базами данных во вторичной реплике, кроме того, к базам данных также нельзя получить доступ только для чтения. Это параметр по умолчанию.

      • AllowReadIntentConnectionsOnly
        Разрешаются только соединения с базами данных во вторичной реплике, у которых свойство «Назначение приложения» равно ReadOnly. Дополнительные сведения об этом свойстве см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

      • AllowAllConnections
        К базам данных во вторичной реплике разрешаются все соединения на доступ только для чтения.

    • Чтобы настроить доступ к соединению для первичной роли, укажите параметр ConnectionModeInPrimaryRole primary_role_keyword, где primary_role_keyword равно одному из следующих значений:

      • AllowReadWriteConnections
        Соединения, у которых свойство «Назначение приложения» равно ReadOnly, разрешены. Если свойство «Назначение приложения» имеет значение ReadWrite либо оно не задано, то соединение разрешено. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.

      • AllowAllConnections
        Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.

    ПримечаниеПримечание

    Чтобы просмотреть синтаксис командлета, воспользуйтесь командлетом Get-Help в среде SQL Server 2012 PowerShell. Дополнительные сведения см. в разделе Получение справок по SQL Server PowerShell.

Настройка и использование поставщика SQL Server PowerShell

Пример (PowerShell)

В следующем примере параметры ConnectionModeInSecondaryRole и ConnectionModeInPrimaryRole устанавливаются в значение 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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Дальнейшие действия. После настройки доступа только для чтения для реплики доступности

Доступ только для чтения к к доступным для чтения вторичным репликам.

Факторы, которые могут повлиять на триггеры и задания после отработки отказа.

Если имеются триггеры и задания, которые не могут выполняться в недоступной или доступной для чтения базы данных-получателе, то в скриптах триггеров и заданий следует проверять, какой базой данных является искомая реплика, базой данных-источником или базой данных-получателем, доступной для чтения. Для получения этих сведений следует использовать функцию DATABASEPROPERTYEX, возвращающую свойство Updatability базы данных. Чтобы определить базу данных, доступную только для чтения, задайте в качестве значения READ_ONLY, как в примере ниже:

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

Чтобы определить базу данных для чтения и записи, укажите в качестве значения READ_WRITE.

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Связанные задачи

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Основные понятия

Обзор групп доступности AlwaysOn (SQL Server)

Активные вторичные реплики: Доступ к вторичным репликам только для чтения (группы доступности AlwaysOn)

Сведения о доступе клиентского соединения с репликами доступности (SQL Server)