2016-11-15 40 views
3

我有一個SQL Server中的文件表,這樣的結構2008 R2數據庫:獲取文件信息在SQL Server數據庫

id | date_created | file_path    | file_type 
---+--------------+-----------------------+-------------------- 
1 | 2016-11-14 | \\server\docs\123.doc | application/msword 
2 | 2016-11-15 | \\server\imgs\456.png | image/png 

我需要確定部分文檔的文件大小。所以我有一個查詢將從文檔表中選擇某些行(基於它們的ID),並且我需要找出文檔集的總文件大小。我做了一些谷歌搜索(當然來了之前),但我可以找到有關文件/ SQL的大部分事情都是關於日誌文件大小,這顯然不是我想要的。

任何和所有的幫助一如既往的讚賞!謝謝!

+0

查看xp_getfiledetails和xp_dirtree等等。聽起來像你想要的。 – scsimon

+0

一個方法可以做到這一點,你可以在這個答案中找到我在SO上[這裏](http://stackoverflow.com/a/34843612/243373)。它使用OLE自動化。還有其他方法,答案說明了其中之一。 –

+0

另一種方式(來自其他方式)來自[SQL#](http://www.sqlsharp.com/features/)庫。該函數是'GetFileInfo',不幸的是它在非空閒部分。還有一種方法是使用shell命令並使用'xp_cmdshell'來獲得結果。 –

回答

1

我回答我自己的問題,完整性...

我無法使用任何關於該問題的意見,提供的選項,由於這個地方需要查詢的是在生產環境的限制跑。相反,我運行查詢來選擇所需的行並將其導出到CSV文件。然後,我編寫了一個快速而骯髒的Java程序(僅僅是因爲它是我最舒服的語言,而且我有過去類似的項目,我可以重複使用),它將CSV文件作爲參數並解析CSV並檢查每個文件並輸出控制檯中的文件總大小。雖然它不能解決SQL中的原始問題,但它在這種特殊情況下確實解決了問題。

注:如果任何人有SQL解決方案,他們可以提交作爲答案,我可以驗證作爲一個有效的答案,我會切換到接受答案。