You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已授权用户仍无法执行存储过程,求排查原因

问题排查与解决方案

1. 确认授权对象是否准确

你需要确保给用户授权的是完整的存储过程名称——因为该存储过程归属[D40\GBH463]用户的架构,授权语句必须指定完整路径:

GRANT EXECUTE ON [D40\GBH463].[CustOrdersOrders2] TO [目标用户名];

如果仅授权CustOrdersOrders2而省略所有者前缀,数据库可能无法定位到正确的存储过程对象。

2. 检查存储过程执行上下文(核心问题)

你的存储过程需要执行INSERT操作到testtabel,默认情况下,存储过程会以调用者的权限访问该表。如果调用用户没有testtabel的INSERT权限,即便拥有存储过程的EXECUTE权限,执行仍会失败。

有两种解决方式:

方式A:给调用用户授予表的INSERT权限

GRANT INSERT ON testtabel TO [目标用户名];

方式B:修改存储过程,以所有者权限执行

在存储过程定义中添加WITH EXECUTE AS OWNER,这样执行时会沿用存储过程所有者(D40\GBH463)的权限访问表,无需给调用用户单独授权表权限:

ALTER PROCEDURE [D40\GBH463].[CustOrdersOrders2] 
    @Param1 varchar(20),
    @Param2 varchar(20)
WITH EXECUTE AS OWNER
AS
BEGIN
    INSERT INTO testtabel (waarde1, waarde2) 
    VALUES (@Param1, @Param2);
END

3. 确认testtabel的所有者与可见性

如果testtabel属于特定架构或用户,需确保:

  • 若使用方式B,存储过程所有者D40\GBH463拥有该表的INSERT权限;
  • 若使用方式A,调用用户能正常访问该表(必要时在存储过程中使用[架构名].[testtabel]的完整路径引用)。

内容的提问来源于stack exchange,提问作者erwin traas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:20:13