【问题标题】:User with execution grant of a procedure that connects to other databases?具有连接到其他数据库的过程的执行权限的用户?
【发布时间】:2017-06-27 13:11:20
【问题描述】:

我有一个用户有权在一个 SQL Server 2008 R2 数据库中执行一个过程。

此过程连接到其他数据库,但该用户执行失败,因为它看不到其他数据库。

我怎样才能让一个用户在单个数据库中执行某些程序,而这些程序连接到其他数据库?

谢谢。

【问题讨论】:

    标签: sql sql-server database stored-procedures sql-server-2008-r2


    【解决方案1】:

    用于执行的登录名需要权限才能执行您的过程在该过程正在处理的目标数据库上执行的操作。

    【讨论】:

    • 那么,我需要为程序使用的每个表添加选择授权吗?
    • 是的,它至少需要其他数据库的 SELECT 授权才能工作。
    • 没有其他选项可以模拟此赠款吗?因为在这个过程中,我处理这些数据是为了显示我想要的每个表的内容,而不是完整的数据。
    • 您可以使用 EXECUTE AS 语句 CREATE PROCEDURE Stored.Procedure @Value int WITH EXECUTE AS OWNER
    • 我以所有者身份执行和以'user1'身份执行两者都可以访问另一个数据库,但它不起作用。在第一种情况下,错误是:“不能作为数据库的安全实体执行,因为“dbo”实体不存在。这种类型的安全实体不能被补充或用户没有授权”。在第二种情况下,它表示用户没有授权。
    猜你喜欢
    • 2016-06-23
    • 2011-07-22
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2013-10-26
    • 2012-10-20
    • 2012-03-14
    • 1970-01-01
    相关资源
    最近更新 更多