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

SQL Server执行#am_generate_waitstats提示存储过程不存在问题咨询

无法调用指定存储过程的问题解决方案

原因排查

  • 你调用的存储过程名称带#前缀,属于会话级临时存储过程,仅在创建它的SSMS会话窗口中可访问,跨会话即使同属tempdb上下文也不可见。对象资源管理器能看到不代表当前查询会话有对应可见性。
  • 若存储过程为##前缀的全局临时存储过程,需确认创建后未被其他会话删除、SQL Server实例未重启(所有临时存储过程都存储在tempdb,实例重启会自动清空tempdb内所有自定义对象)。
  • 需确认存储过程名称无拼写错误,若你的SQL Server实例使用大小写敏感排序规则,名称大小写不匹配也会触发找不到对象的报错。
  • 部分权限不足场景下,SQL Server会统一返回「找不到存储过程」的报错,避免对象存在性信息泄露,需验证当前账号是否有该存储过程的EXECUTE权限。

修复方案

  1. 回到创建#am_generate_waitstats的SSMS查询窗口执行调用语句,即可正常执行。
  2. 若需要跨会话调用该存储过程,可修改为全局临时存储过程或者普通永久存储过程,全局临时存储过程创建示例:
USE tempdb
GO
CREATE PROCEDURE ##am_generate_waitstats
AS
-- 此处写入存储过程原有逻辑
BEGIN
  -- 业务实现代码
END
GO
  1. 调用前可执行以下语句确认当前会话是否能识别该存储过程:
SELECT * FROM tempdb.sys.procedures WHERE name LIKE '%am_generate_waitstats%'

如果查询结果为空,说明当前会话无该存储过程的可见性,需要重新创建。
4. 权限验证可执行以下语句:

USE tempdb
GO
EXECUTE AS USER = '你当前的登录账号名'
SELECT HAS_PERMS_BY_NAME('dbo.#am_generate_waitstats', 'PROCEDURE', 'EXECUTE')
REVERT

返回值为1代表有执行权限,返回0代表无权限,需联系管理员分配对应权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:45:01