【问题标题】:Download XML to SQL Variable将 XML 下载到 SQL 变量
【发布时间】:2017-07-22 11:27:30
【问题描述】:

每周发布一个 XML 文件,我希望通过存储过程调用将其存储到表中(有效地创建备份和审计日志)。

我见过similar 的解决方案,但这在直接指定 XML 文件时似乎不起作用,例如http://www.website.com/File.xml

欢迎提出建议!

谢谢, 戴夫

【问题讨论】:

  • 不要那样滥用你的数据库服务器。从 Internet 下载文件是客户端软件应该做的事情(如 PowerShell 脚本)。这也更容易排除故障和监控。
  • 我应该补充一点,我也尝试使用 OPENROWSET 但这会导致错误,消息 4861,级别 16,状态 1,第 41 行无法批量加载,因为文件“website.com/File.xml”无法被打开。操作系统错误代码 123(无法检索此错误的文本。原因:15105)。
  • 我想缺乏其他方面的经验让我以这种方式寻找解决方案。该数据库将是一个管理数据库,在本地环境中,而不是在生产环境中。 XML 将包括用于管理数据库备份的数据——例如,XML 将包括将用于命名约定的引用列表。我不认为我如何将 XML 输入数据库并不重要,所以如果有更好/更简单的方法,那么我会接受它!

标签: sql sql-server xml


【解决方案1】:

Jeroen 的评论是我的回答,但我无法将其标记为回复。

我选择仍然通过 SQL 执行 powershell 命令,因为它是更大进程的一部分,但可以通过一行代码执行;

exec master..xp_cmdshell 'powershell.exe Invoke-WebRequest "https://www.website.com/File.xml" -OutFile "C:\temp\File.xml"'

【讨论】:

    【解决方案2】:

    不确定您是否已将 XML 文件放入变量中,但以防万一...

    Declare @XML xml; 
    Select @XML = BulkColumn FROM  OPENROWSET(BULK 'C:\temp\File.xml', SINGLE_BLOB) x; 
    Select @XML
    

    【讨论】:

    • 是的,当文件在本地可用时,这是一种享受,只是无法直接通过 HTTP 调用实现。谢谢约翰:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    相关资源
    最近更新 更多