【问题标题】:Return an external file in SQL result set返回 SQL 结果集中的外部文件
【发布时间】:2013-02-06 16:13:58
【问题描述】:

我需要开发一个 Web 服务以使某些文件在外部网站上可用。这些文件在文件服务器上保存和更新,它们的 UNC 路径在数据库中。 Web 服务将托管在我们 DMZ 中的服务器上,并且可以访问数据库但不能访问文件共享。

我看到的选项是:

  1. 将文档上传到 Web 服务器。如果没有 LAN 访问,这很困难。
  2. 编写一个附加过程将文件上传到数据库并从那里提供它们。这会导致到处都做额外的工作,但可能是可以接受的。
  3. 为存储过程找到某种方法,以从网络共享读取文件并将它们返回到可供 Web 服务使用的结果集中。

有谁知道我该如何处理选项 3?我怀疑我需要将它上传到一个 blob 中并在 Web 服务中读取它,但是否可以仅使用 SQL 将文件加载到一个 blob 中?

更新: 我找到了this 并复制了 ufsReadfileAsString 函数。我不断收到“打开文件时出错”错误,我认为这可能与用户权限有关。

【问题讨论】:

  • 您要阅读哪种文件?如果您的文件存在 OLEDb 提供程序,您可以使用 Linked Servers 和 OPENROWSET 执行选项 3。
  • 这是一个二进制文件,所以没有行集。

标签: sql sql-server tsql blob


【解决方案1】:

终于,将近四年后,我重新审视了它。原来这真的很简单!

declare @myFile varchar(max)

select @myFile = BulkColumn
from openrowset(bulk'C:\Path\To\File\Test.txt', single_blob) x;

select @myFile

美中不足的地方显然是文件权限,但是一旦你对它进行了排序,这就很好用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多