【问题标题】:Not able to execute system procedure on SQL Server at AWS RDS无法在 AWS RDS 的 SQL Server 上执行系统过程
【发布时间】: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


【解决方案1】:

来自 AWS 开发者论坛:https://forums.aws.amazon.com/message.jspa?messageID=876085

抱歉,RDS 不支持 OLE 自动化。如果您绝对必须使用这些存储过程,那么您将不得不在 EC2 上运行自我管理的 SQL Server。

【讨论】:

    猜你喜欢
    • 2020-12-20
    • 2017-04-16
    • 2017-10-25
    • 2019-02-09
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 2020-11-19
    相关资源
    最近更新 更多