我正在尝试向用户授予 Azure 中的 sql server 访问权限,但似乎遇到问题。
用户应具有只读访问权限。
必须能够在 SSMS 中查看表 /view/Programmability
可以点击查看底层脚本定义。
不应该能够创建、插入、删除、更改、修改。
这就是我在Master DB中所做的
CREATE LOGIN test1 WITH PASSWORD = 'Test123%57';
CREATE USER test1 FROM LOGIN test1
在实际数据库中
CREATE USER test1 FROM LOGIN test1 WITH DEFAULT_SCHEMA=dbo;
ALTER ROLE db_datareader ADD MEMBER test1 ;
Alter Role db_denydatawriter ADD Member test1 ;
GRANT SELECT TO test1
Grant VIEW DEFINITION To test1
完成上述操作后,用户可以运行任何选择查询并从任何表中获取结果(例如:select * from [PeopleTable])
但是当尝试扩展表/视图/可编程性时
无法在Azure中查看SSMS中的表,但可以执行select
按照以下方法查看 SSMS 中的表。
创建示例数据库并将一些数据存储到示例表中。
在 SSMS 中使用以下命令创建带有密码的
login
master db
:
CREATE LOGIN firstUser WITH PASSWORD = '*****';
使用以下命令在主数据库中创建
user
:
CREATE USER firstUser FROM LOGIN firstUser;
在数据库中创建与服务器中创建的用户相同的用户。确保
user
存在于主数据库中。
CREATE USER firstUser FROM LOGIN firstUser;
授予
user
权限,以使用以下命令从特定数据库中选择数据。
GRANT SELECT ON DATABASE::firstDb TO firstUser;
授予
user
只能查看数据但不能修改数据的权限。
GRANT VIEW DEFINITION ON DATABASE::firstDB TO firstUser;
下面是输出,其中
user
可以查看数据但无法修改数据。
当用户尝试修改数据时,会抛出如下错误:
正如 Thom 所建议的,可以通过使用密码创建
user
(而不是创建 login
)来查看数据。要创建带有密码的user
,请按照以下方法操作:
master
数据库和服务器中创建的示例数据库中创建一个具有密码的用户,如下所示。
CREATE USER secondUser WITH PASSWORD = '****';
GRANT SELECT ON DATABASE::firstDb TO secondUser;
GRANT VIEW DEFINITION ON DATABASE::firstDB TO secondUser;
输出:
当用户尝试修改数据时,会抛出如下错误: