create login pbi_reader with password = '<your strong password>'
create user pbi_reader for login pbi_reader
--some combination of:
grant select to pbi_reader --grant select on whole database
grant select on schema::dbo to pbi_reader --grant select on one schema
grant select on dbo.some_table to pbi_reader --grant select on one table database
deny select on dbo.user_membership to pbi_reader --override the grant with a deny for one table
您需要区分用户和登录名。登录名用于登录您的实例。然后,此登录名需要该登录名要访问的每个数据库中的用户。
然后,您只需将该用户设置为数据库中 db_datareader 角色的成员。
来宾用户不是您要找的。如果启用来宾 (
GRANT CONNECT TO guest
),那么所有登录现在都可以使用您分配给来宾用户的任何权限访问数据库。来宾用户默认没有任何权限,由您分配。但同样,来宾用户不是您要找的。如果你有例外,你可以
DENY SELECT ON tablename TO username
为这些表例外。DENY 优先于 GRANT。以上有一些方面和例外,但我不想混淆水域并深入解释与手头的案例无关的解释,因此我在上面进行了轻微的概括和简化。