【发布时间】:2020-01-02 20:24:38
【问题描述】:
我们目前有一个运行 SQL Server 的 Amazon RDS 实例,我们遇到了一个问题,希望大家能提供帮助。
我们正在尝试执行查询:
Exec sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT;
但它被退回了:
Msg 229, Level 14, State 5, Procedure sp_OACreate, Line 1 [Batch Start Line 0]
The EXECUTE permission was denied on the object 'sp_OACreate', database 'mssqlsystemresource', schema 'sys'.
经过一些研究,问题显然是执行它的 SQL Server 用户需要对“主”数据库中的某些资源具有权限,据我们所知,即使是 AWS RDS 上的“sa”用户也没有有。
除了这个过程之外,我们还需要执行其他系统过程。
你们知道是否可以授予用户在 AWS RDS 上执行此操作的权限?如果是的话,怎么做?
提前致谢!
编辑#1: 已经尝试执行:
USE master;
GRANT EXEC ON sp_OACreate TO myuser;
GRANT EXEC ON sp_OAMethod TO myuser;
GRANT EXEC ON sp_OAGetProperty TO myuser;
GRANT EXEC ON sp_OADestroy TO myuser;
GRANT EXEC ON sp_OAGetErrorInfo TO myuser;
返回:
Msg 15151, Level 16, State 1, Line 4
Cannot find the user 'myuser', because it does not exist or you do not have permission.
PS:“myuser”用户存在。这些命令是使用“sa”用户执行的。
【问题讨论】:
-
来自Permissions:"需要sysadmin 固定服务器角色的成员资格或直接对此存储过程执行权限。
Ole Automation Procedures配置必须是 启用 以使用与 OLE 自动化相关的任何系统过程。” 如果登录不应具有sysadmin权限,则为其链接的USER对象授予执行权限 -
@Larnu:问题已用我已经尝试过的内容进行了编辑(“编辑#1”)。请检查您是否是这个意思。
-
如果您被允许在任何托管的 SQL Server 解决方案上运行此过程,我会感到非常惊讶,因为它基本上允许您在托管商管理的服务器上运行任意代码。
-
谢谢你,@DavidBrowne-Microsoft。显然正是这个。我在 AWS 开发人员论坛下面给出了一个答案。
标签: sql-server amazon-web-services amazon-rds