将Azure db配置为只读

将Azure db配置为只读,azure,azure-sql-database,Azure,Azure Sql Database,是否有方法将Azure sql数据库临时配置为只读。在尝试创建只读用户时,我运行了以下命令 CREATE LOGIN reader WITH password='****' -- successful CREATE USER readerUser FROM LOGIN reader; -- successful EXEC sp_addrolemember 'db_datareader', 'readerUser'; -- failed 最后一条语句因错误而失败 无法更改角色“db_data

是否有方法将Azure sql数据库临时配置为只读。在尝试创建只读用户时,我运行了以下命令

CREATE LOGIN reader WITH password='****' -- successful
CREATE USER readerUser FROM LOGIN reader; -- successful
EXEC sp_addrolemember 'db_datareader', 'readerUser';  -- failed 
最后一条语句因错误而失败

无法更改角色“db_datareader”,因为它不存在或不存在 你没有权限


如果您确实想使用上面提到的命令添加只读用户(以便根据指定连接的用户,您可以以只读模式或读写模式进行连接),以下是执行上述命令时可能出现错误的原因说明

CREATE LOGIN reader WITH password='****' -- successful
CREATE USER readerUser FROM LOGIN reader; -- successful
EXEC sp_addrolemember 'db_datareader', 'readerUser';  -- failed
无法更改角色“db_datareader”,因为它不存在或不存在 你没有权限

当我直接在主数据库上执行您提到的所有3个命令时,我能够重现与您相同的错误

理想情况下,要创建只读用户,您必须使用master数据库创建登录名,使其成为服务器级登录名,然后在您要使用的数据数据库上创建用户和添加角色成员

-- Run this command on Master Database
CREATE LOGIN reader WITH password='****'  

-- Run these commands on data Database
CREATE USER readerUser FROM LOGIN reader;  
EXEC sp_addrolemember 'db_datareader', 'readerUser'; 

-- Optionally, run an extra command to create the same user on Master database. This command is not required if you connect only from code/api's, but if you want to connect to your database using SQL Management Studio, then you need this one.
CREATE USER readerUser FROM LOGIN reader; -- run this on Master Database again

在我看来,你应该发布你的更新作为答案。