Node.js连接SQL Server调用存储过程提示找不到存储过程问题求助
解决Node.js调用SQL Server存储过程提示“找不到存储过程”的问题
核心问题分析
从你提供的SQL Server目录结构来看,存储过程的完整限定名是dbo.PKG_ADMINISTRATION.GET_PARTS_LIST,但代码里调用时仅写了PKG_ADMINISTRATION.GET_PARTS_LIST,缺少架构前缀dbo——这是导致找不到存储过程的主要原因。SQL Server在查找存储过程时,若未指定架构,会使用当前连接用户的默认架构,若默认架构不是dbo,就会出现找不到的错误。
具体修复步骤
修正存储过程调用的完整名称
修改代码中execute方法的参数,补充dbo架构前缀,同时修复output参数的语法错误(缺少逗号):await pool.connect(); const result = await pool.request() .input('Name', sql.VarChar(200), name) .output('list', sql.VarChar(2000)) .execute("dbo.PKG_ADMINISTRATION.GET_PARTS_LIST"); res.send({result});检查连接账号的默认架构(可选)
如果不想修改代码,可以确认Node.js连接SQL Server的账号默认架构是否为dbo。在SQL Server中执行以下查询:SELECT name, default_schema_name FROM sys.database_principals WHERE name = '你的数据库连接账号';若默认架构不是
dbo,可通过以下语句修改:ALTER USER [你的连接账号] WITH DEFAULT_SCHEMA = dbo;
补充说明
ASP.NET能正常调用的原因,大概率是其使用的数据库连接账号默认架构为dbo,或者调用时明确指定了完整的存储过程名称,因此可以正确定位到目标存储过程。
内容的提问来源于stack exchange,提问作者Awais Aslam
相关产品推荐
相关产品推荐

