Можно ли добавить пользователя с логином в базу данных только для чтения? - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть база данных sql azure, которая географически реплицируется. Теперь я хочу создать пользователя с логином и предоставить ему разрешение на чтение данных из некоторой таблицы в реплике только для чтения. Но похоже, что это невозможно.

Когда я пытаюсь создать пользователя для входа в систему, я получаю сообщение об ошибке о базе данных только для чтения:

 CREATE USER [user_name] FOR LOGIN [login_name]

Не удалось обновить базу данных "test-master", поскольку база данных только для чтения.

Когда я пытаюсь сделать базу данных для чтения-записи, она говорит мне, что это невозможно из-за гео-репликации:

 ALTER DATABASE [test-master] SET READ_WRITE  

Ошибка ODBC: состояние: 42000: ошибка: 1468 Сообщение: '[Microsoft] [Драйвер ODBC 17 для SQL Сервер] [SQL Server] Операция не может быть выполнена с базой данных "test-master", потому что он участвует в сеансе зеркального отображения базы данных или группа доступности. Некоторые операции не допускаются на база данных, которая участвует в сеансе зеркального отображения базы данных или в группа доступности. '. Сообщение 5069, Уровень 16, Состояние 3, Строка 5 ALTER Оператор DATABASE не выполнен.

Так это вообще возможно?

UPDATE:

Похоже, информация для входа не реплицируется.

Сценарий пользователя как CREATE TO в Master db:

CREATE USER [user_name] FOR LOGIN [login_name] WITH DEFAULT_SCHEMA=[dbo]

Сценарий пользователя как CREATE TO в реплике db:

CREATE USER [user_name] WITH DEFAULT_SCHEMA=[dbo]

Означает ли это, что невозможно добавить новый логин в базу данных реплики?

1 Ответ

0 голосов
/ 25 апреля 2019

Я нашел решение здесь: https://blogs.msdn.microsoft.com/azuresqldbsupport/2018/05/21/tips-tricks-what-you-need-to-do-to-creat-sql-login-to-authenticate-to-azure-sql-dbs-members-in-auto-failover-group/

Можно использовать функцию Forced Failover, которая меняет базы данных и, следовательно, делает мою реплику доступной для записи, чтобы я мог создавать пользователя и предоставлять разрешения (конечно, во время этого изменения предыдущий master db становится доступным только для чтения).

...