将Azure数据库配置为只读

时间:2018-09-07 00:24:22

标签: 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_datareader”,因为它不存在或   您没有权限。

1 个答案:

答案 0 :(得分:1)

如果您确实想使用上述命令添加只读用户(以便您可以以只读模式或读写模式进行连接,具体取决于指定用于连接的用户),这是一个执行上述命令时,可能出了什么问题的说明。

CREATE LOGIN reader WITH password='****' -- successful
CREATE USER readerUser FROM LOGIN reader; -- successful
EXEC sp_addrolemember 'db_datareader', 'readerUser';  -- failed
  

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

当我执行直接在master数据库中提到的所有3条命令时,我能够重现相同的错误

理想情况下,要创建一个只读用户,必须使用主数据库创建登录名,以便它是服务器级登录,然后在要使用的数据数据库上进行用户创建和添加角色成员。

-- 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