首页 > 解决方案 > 如何使用 SQL Server 和 AWS RSD 读取 XML 文件?

问题描述

我在 AWS RSD 上有一个数据库,我有一个 AWS 的基本帐户。我发现我必须将 XML 文件存储在 Internet 上,然后我必须从 URL 中读取它。

因此,我将 XML 文件存储到 Github 存储库中,然后执行下面的查询。在我的本地服务器上,我必须执行 RECONFIG 来激活一些权限。

它在我的本地服务器上运行良好,但在我的 AWS 数据库中它不起作用。它打印权限错误sp_OACreate, sp_OAMethod, sp_OAGetProperty, sp_OADestroy。我也没有权限执行sp_configureRECONFIGURE.

我试图更改服务器页面中的设置,但我没有找到任何东西。

DECLARE    
    @url VARCHAR(1000),
    @url2 VARCHAR(300),
    @win INT,
    @hr INT,
    @Text VARCHAR(4000),
    @xml XML

SET @url = 'https://raw.githubusercontent.com/KevinFallas03/FacturacionMunicipal_BD/master/Base%20de%20Datos/XML/Administradores.xml'--current file
SET @url2 = 'http://www.bnr.ro/nbrfxrates.xml'--test file

EXEC @hr = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @win OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr = sp_OAMethod @win, 'Open', NULL, 'GET', @url, 'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr = sp_OAMethod @win, 'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr = sp_OAGetProperty @win, 'ResponseText', @Text OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win

EXEC @hr = sp_OADestroy @win 
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win 

SELECT @Text

SET @xml=CAST(@Text AS XML)
SELECT @xml

查询激活权限,它适用于本地数据库:

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

我的意图是从我在 AWS 的数据库中读取一个 XML 文件。所以,如果有其他方法可以做到这一点,请告诉我。

标签: sql-serverxmlamazon-web-services

解决方案


RDS 提供了许多不同类型的数据库。看起来您正在使用 Microsoft SQL Server。

RDS 是一种托管数据库服务。这意味着您没有数据库的完整管理员权限。您似乎希望使用 OLE 自动化,这需要使用某些存储过程,例如sp_OACreate.

RDS Microsoft SQL Server支持OLE 自动化。一种替代方法是安装和管理您自己在 EC2 上运行的 MS SQL Server


推荐阅读