代码之家  ›  专栏  ›  技术社区  ›  Sam

关于模式和安全性的问题

  •  1
  • Sam  · 技术社区  · 16 年前

    我需要设置一些用户,以便能够创建只读访问的存储过程。此外,在生产中,他们不能选择,只能在他们创建的过程上执行。在开发过程中,他们会进行选择,以便创建自己的过程。

    我已经建立了一个称为报告的模式。该架构的所有者是一个登录-报告管理员。该用户可以选择访问表。然后我将报告模式的alter和execute提供给了我的报告编写器帐户。dbo拥有该表—所以如果dbo也拥有报告模式,它就可以工作—但是删除也可以在过程中工作!

    我们正在使用ReportingServices,希望数据库中的所有SQL都具有可维护性。

    谢谢!

    2 回复  |  直到 16 年前
        1
  •  2
  •   Remus Rusanu    16 年前

    正如您已经发现的那样,使用所有权链接不会成功。解决方案如下:报表编写器必须使用EXECUTE AS SELF子句创建其报表,以便在报表编写器特权下执行它们。然后,报表阅读器组将能够利用 reports 执行所述报告的模式,并且由于EXECUTEAS子句,这些报告将能够读取数据。

        2
  •  0
  •   Andomar    16 年前

    您可以为角色和用户分配权限,不需要单独的模式。因此,我只使用一个模式:“dbo”(默认)

    为用户创建数据库角色。将数据阅读器授予开发中的角色。对于开发和生产,授予对存储过程的执行权限。据我所知,您必须为每个存储过程授予执行权限。

    推荐文章