概要
连接到MSSQL服务器时,我需要使用应用程序角色。
执行相应的存储过程(sp_setapprole)时,数据库服务会发出错误“请求错误:应用程序角色只能在临时级别激活”。
长版
出于安全原因,我们希望利用Microsoft SQL Server的应用程序角色功能,版本14.0.1000.169
这意味着,我们与高度受限的用户创建连接,然后需要使用一组不同的凭据执行存储过程“sp_setapprole”,以确保使用正确的应用程序完成访问。
在查询中调用存储过程时:
await this.Connection.query('sp_setapprole Test.Full, xxxx');
数据库服务返回以下错误:
query failed: sp_setapprole 'Test.Full', 'xxxx'
error: RequestError: Application roles can only be activated at the ad hoc level.
at handleError ([...]\node_modules\mssql\lib\tedious.js:519:15)
at emitOne (events.js:116:13)
at Connection.emit (events.js:211:7)
at Parser.<anonymous> ([...]\node_modules\tedious\lib\connection.js:489:16)
at emitOne (events.js:116:13)
at Parser.emit (events.js:211:7)
at Parser.<anonymous> ([...]\node_modules\tedious\lib\token\token-stream-parser.js:54:15)
at emitOne (events.js:116:13)
at Parser.emit (events.js:211:7)
at addChunk ([...]\node_modules\readable-stream\lib\_stream_readable.js:284:12)
假设
我认为该问题位于:
问题
有没有办法在typeORM中使用这个需要ad hoc级别的存储过程/存储过程?
如果问题出在连接层上,是否有办法在建立连接时禁用连接池?将连接或最大连接设置为1仍然似乎建立了池连接。
如果问题位于查询层,是否有办法阻止/绕过此调用的包装器?有没有办法在没有框架进一步操作的情况下执行存储过程/查询?