2013-02-21 22 views
1

我需要開發一個Web服務來使外部網站上的某些文件可用。這些文件在文件服務器上使用其UNC路徑保存並更新到數據庫中。 Web服務將託管在我們的DMZ中的服務器上,並且可以訪問數據庫,但不能訪問文件共享。返回SQL結果集中的外部文件

我看到的選項:

  1. 上傳到網上的文件服務器。沒有局域網訪問就很困難。
  2. 編寫一個額外的過程將文件上傳到數據庫並從那裏提供它們。這會導致無處不在的額外工作,但可能可以接受
  3. 尋找存儲過程從網絡共享中讀取文件並將其返回到Web服務可能使用的結果集中的方法。

有沒有人知道我可以去選擇3?我懷疑我需要將它上傳到blob並在Web服務中讀取它,但是甚至可以僅使用SQL將文件加載到Blob中?

更新: 我發現this並複製了ufsReadfileAsString函數。我不斷收到「打開文件時出現錯誤」錯誤,我認爲這可能與用戶權限有關。

+0

你想讀哪種文件?如果您的文件存在OLEDb提供程序,則可以使用鏈接服務器和OPENROWSET執行選項3。 – Emyl 2013-02-21 11:19:31

+0

這是一個二進制文件,所以沒有行集。 – 2013-02-21 11:58:57

回答

0

最後,近四年後,我又看了一遍。事實證明這非常簡單!

declare @myFile varchar(max) 

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

select @myFile 

美中不足的是明顯的文件權限,但一旦你有了排序,這個效果很好。