Настройка доступа только для чтения в реплике доступности (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
Настройка доступа к реплике доступности
В обозревателе объектов подключитесь к экземпляру сервера, на котором размещена первичная реплика, и разверните дерево сервера.
Разверните узел Высокий уровень доступности AlwaysOn и узел Группы доступности.
Щелкните группу доступности, реплику которой нужно изменить.
Щелкните правой кнопкой мыши реплику доступности и выберите пункт Свойства.
В диалоговом окне Свойства реплики доступности можно изменить доступ к соединению для первичной и вторичной роли следующим образом:
Для вторичной роли выберите новое значение в раскрывающемся списке Доступная для чтения вторичная следующим образом.
Нет
Для баз данных-получателей этой реплики соединения пользователя не разрешаются. Для них не разрешен доступ для чтения. Это параметр по умолчанию.С назначением только чтения
Для баз данных-получателей этой реплики разрешены лишь подключения только для чтения. Для всех баз данных-получателей разрешен доступ для чтения.Да
Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.
Для первичной роли выберите новое значение в раскрывающемся списке Соединения в первичной роли следующим образом:
Разрешить все соединения
Разрешаются все соединения с базами данных в первичной реплике. Это параметр по умолчанию.Разрешены соединения с доступом на чтение и на запись
Если свойство «Назначение приложения» имеет значение ReadWrite или не задано, то соединение разрешено. Соединения, у которых свойство соединения «Назначение приложения» равно ReadOnly, не разрешены. Таким образом, клиент не сможет по ошибке подключить рабочую нагрузку с намерением чтения к первичной реплике. Дополнительные сведения о свойстве соединения «Назначение приложения» см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.
[В начало]
Использование Transact-SQL
Настройка доступа к реплике доступности
Примечание |
---|
Пример этой процедуры см. в подразделе Примеры (Transact-SQL) далее в этом разделе. |
Подключитесь к экземпляру сервера, на котором находится первичная реплика.
Если вы указываете реплику для новой группы доступности, воспользуйтесь инструкцией 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
Для баз данных-получателей этой реплики разрешены все соединения, но только с доступом для чтения. Для всех баз данных-получателей разрешен доступ для чтения.
Чтобы настроить доступ к соединению для первичной роли, укажите в предложении 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) далее в этом разделе. |
Перейдите в каталог (cd) экземпляра сервера, на котором находится первичная реплика.
При добавлении реплики доступности в группу доступности воспользуйтесь командлетом 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
[В начало]
Дальнейшие действия. После настройки доступа только для чтения для реплики доступности
Доступ только для чтения к к доступным для чтения вторичным репликам.
При использовании Программа bcp или Программа sqlcmd можно указать доступ только для чтения к любой вторичной реплике, которой разрешен доступ только для чтения. Для этого нужно указать параметр -K ReadOnly.
Обеспечение возможности подключения клиентских приложений к доступным для чтения вторичным репликам.
Предварительные требования
Ссылка
Убедитесь, что группа доступности имеет прослушиватель.
Создание или настройка прослушивателя группы доступности (SQL Server)
Настройте маршрутизацию только для чтения в группе доступности.
Настройка маршрутизации только для чтения в группе доступности (SQL Server)
Факторы, которые могут повлиять на триггеры и задания после отработки отказа.
Если имеются триггеры и задания, которые не могут выполняться в недоступной или доступной для чтения базы данных-получателе, то в скриптах триггеров и заданий следует проверять, какой базой данных является искомая реплика, базой данных-источником или базой данных-получателем, доступной для чтения. Для получения этих сведений следует использовать функцию DATABASEPROPERTYEX, возвращающую свойство Updatability базы данных. Чтобы определить базу данных, доступную только для чтения, задайте в качестве значения READ_ONLY, как в примере ниже:
DATABASEPROPERTYEX([db name],’Updatability’) = N’READ_ONLY’
Чтобы определить базу данных для чтения и записи, укажите в качестве значения READ_WRITE.
[В начало]
Связанные задачи
Настройка маршрутизации только для чтения в группе доступности (SQL Server)
Создание или настройка прослушивателя группы доступности (SQL Server)
[В начало]
См. также
AlwaysOn. Предложение значения доступной для чтения вторичной реплики
AlwaysOn. Почему имеется два параметра для включения вторичной реплики в режиме рабочей нагрузки?
AlwaysOn. Была включена доступная для чтения вторичная реплика, но запрос блокирован?
AlwaysOn. Доступная для чтения вторичная реплика и задержка данных
[В начало]
См. также
Основные понятия
Обзор групп доступности AlwaysOn (SQL Server)
Сведения о доступе клиентского соединения с репликами доступности (SQL Server)