【问题标题】:Grant permission to execute procedure including all required other permissions授予执行过程的权限,包括所有必需的其他权限
【发布时间】:2016-06-23 15:38:39
【问题描述】:

我有一个技术用户,对数据库的权限非常有限。我授予了其中一个过程的权限,但这个过程使用了很多其他东西(尤其是引用其他数据库)。

我的程序如下所示:

CREATE PROCEDURE dbo.example AS BEGIN
    SELECT * FROM other_db.dbo.table
    SELECT * FROM yet_another_db.dbo.table
    INSERT INTO dbo.some_local_tables VALUES (1,2,3)
END

用户目前无权访问other_dbyet_another_db

如何向存储过程授予权限,包括实际执行该过程所需的所有权限?

【问题讨论】:

  • with execute as owner
  • @IvanStarostin 将 with execute as owner 给予额外的权限,比如改变程序?
  • 在您的问题中详细说明此 SP 中发生的情况。以及如何组织跨数据库访问。要调用其他 SP,请访问表 - 是的,这就足够了。
  • 我在这个过程中看不到任何ALTER PROC 命令。你为什么问这个?
  • @IvanStarostin 我想授予execute 过程的权限,如果可能的话,不授予任何进一步的权限,例如更改或删除过程,或任何其他权限。

标签: sql-server stored-procedures permissions sql-server-2012


【解决方案1】:

这里是提供访问另一个数据库的不同场景的链接:

https://www.mssqltips.com/sqlservertip/2549/options-for-cross-database-access-within-sql-server/

简而言之:您必须授予此用户访问权限或遵循证书签名方案(查看该文章末尾的另一个链接。

Cert 场景将让您不要将当前用户映射到其他数据库,也不要明确授予他对该数据库的任何权限。但是他将能够运行这个访问其他数据库的过程。

【讨论】:

  • 谢谢,我试试看。
猜你喜欢
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 2018-11-19
  • 2011-09-25
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多