小编Jul*_*gan的帖子

为不同的 SQL Server 架构设置用户权限

我需要限制对特定用户的访问,但他们仍然需要能够查看 dbo 拥有的表中的数据。

我正在尝试执行以下操作:

  1. dbo 架构正常运行,可以访问所有内容
  2. schema1 架构只能访问 schema1 对象
  3. 如果 schema1 视图或存储过程访问 dbo 拥有的表中的数据,则权限链适当
  4. user1 可以访问 schema1,没有其他权限;除了#3的情况

这是我尝试过的:

  1. 使用随机密码创建映射到测试登录的 user1 用户
  2. 在 dbo 模式中创建了几个表,其中包含一些测试数据
  3. 创建了 schema1 架构
  4. 创建了一个 schema1.get_profiles,它从一个名为 schema1.profiles 的视图中进行选择,该视图访问 dbo.people、dbo.taglinks 和 dbo.tags 中的数据

但是,在以 user1 身份登录时使用以下语句:

EXEC get_profiles 1
Run Code Online (Sandbox Code Playgroud)

结果是:

The SELECT permission was denied on the object 'tags', database 'schema_test', schema 'dbo'.
Run Code Online (Sandbox Code Playgroud)

我已经尝试过WITH EXECUTE AS OWNER并且无法开始理解“所有权链接”应该如何工作。

我也试过

GRANT EXECUTE ON SCHEMA::schema1 TO user1
GRANT INSERT ON SCHEMA::schema1 TO user1
GRANT SELECT ON SCHEMA::schema1 TO …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server stored-procedures

16
推荐指数
1
解决办法
8万
查看次数