0

我有一个地理复制的 sql azure 数据库。现在我想创建一个登录用户并授予他从只读副本中的某个表读取数据的权限。但这似乎是不可能的。

当我尝试为登录创建用户时,我收到一条关于只读数据库的错误消息:

 CREATE USER [user_name] FOR LOGIN [login_name]

无法更新数据库“test-master”,因为数据库是只读的。

当我试图使数据库读写时,它告诉我这是不可能的,因为地理复制:

 ALTER DATABASE [test-master] SET READ_WRITE  

ODBC 错误:状态:42000:错误:1468 消息:'[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]无法对数据库“test-master”执行操作,因为它涉及数据库镜像会话或可用性组。在参与数据库镜像会话或可用性组的数据库上不允许某些操作。消息 5069,级别 16,状态 3,第 5 行 ALTER DATABASE 语句失败。

那么有可能吗?

更新:

好像登录信息没有被复制。

在主数据库中将用户作为 CREATE TO 编写脚本:

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

将用户脚本作为副本数据库中的 CREATE TO:

CREATE USER [user_name] WITH DEFAULT_SCHEMA=[dbo]

这是否意味着无法向副本数据库添加新登录名?

4

1 回答 1

0

我在这里找到了解决方案:https ://blogs.msdn.microsoft.com/azuresqldbsupport/2018/05/21/tips-tricks-what-you-need-to-do-to-creat-sql-login-to-验证到 azure-sql-dbs-members-in-auto-failover-group/

可以使用Forced Failover交换数据库的功能,从而使我的副本可写,这样我就可以创建用户并授予权限(当然,在此更改期间,以前的主数据库变为只读)。

于 2019-04-25T14:46:08.233 回答