gpt4 book ai didi

sql-server - SSRS 调用存储过程失败,找不到用户 'dbo'

转载 作者:行者123 更新时间:2023-12-02 16:35:08 26 4
gpt4 key购买 nike

我有一个 SSRS 报告正在调用我的数据库中的存储过程。

本地一切正常,我在本地连接 Windows 身份验证以访问数据库,没有问题。

部署 SSRS 报告后,它被设置为使用不同的登录名,并且此登录名具有授予执行存储过程的正确角色。但是,当尝试在 SSRS 服务器上查看报告时,我收到此消息:

Cannot find the user 'dbo', because it does not exist or you do not have permission.

如果我删除允许授予执行权限的角色,我会收到一个更具体的错误,指出我没有执行存储过程的权限。但是一旦这个角色被放回到用户帐户上,SSRS 在它返回时运行就会显示错误

Cannot find the user 'dbo'

我拥有的被授予执行权限的角色是由“dbo”用户授予的,这是数据库所有者。我在网上发现一些事情说数据库备份可能搞砸了一些用户登录。我已经检查过,数据库所有者 sid 与 name = 'dbo' 的 sysuser sid 相同,所以我认为这不是问题所在。

还有其他人知道我可以尝试什么吗?

编辑:存储过程的详细信息:它是一个带有一些内部连接的简单选择。在存储过程的末尾,授予对我的 SSRS 用户所属角色的访问权限:

GRANT EXECUTE
ON OBJECT::[dbo].[Application_LoadData] TO [SSRSUserRole]
AS [dbo];

最佳答案

存储过程包括 CREATE PROCEDURE 之后批处理中的所有语句。所以像这样的过程

CREATE PROCEDURE USP_FOO
AS
BEGIN
SELECT * FROM FOO
END

GRANT EXECUTE ON USP_FOO TO SOMEUSER AS DBO;

每次程序运行时都会尝试执行 GRANT,如果没有被 dbo 运行则失败。

创建程序的脚本在授予之前应该有一个批分隔符。例如:

CREATE PROCEDURE USP_FOO
AS
BEGIN
SELECT * FROM FOO
END

GO

GRANT EXECUTE ON USP_FOO TO SOMEUSER AS DBO;

关于sql-server - SSRS 调用存储过程失败,找不到用户 'dbo',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62817961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com