我的問題是這樣的:我有可能將巨大的文件存儲在SQL Server 2008(> 1GB)上的二進制(圖像)字段中。如何只選擇一部分巨大的二進制文件?
如果我使用常規選擇語句返回整個二進制文件,則查詢花費的時間超過一分鐘會將結果返回到我的.NET程序,並且我的客戶端應用程序超時。我在尋找的是TSQL代碼,它會限制返回的數據的大小(可能是300mb),允許我遍歷剩餘的塊並防止超時。
這必須發生在SQL查詢中,而不是在數據返回後的處理中。
我試過SubString,MS表示與二進制數據一起工作,但我得到的所有數據都是最大8000字節。我試過的最後一件東西看起來像這樣:
select substring(Package,0,300000000) 'package', ID from rplPackage where ID=0
--where package is the huge binary stored in a image field
由於客戶端應用程序的原因,數據流並不是一個真正的選項。
任何想法?
你應該reecaluate,無論是存儲文件,數據庫中的BLOB真正適合您的需要:這可能只是更好地Stroe的文件的文件,並只保存在數據庫的路徑和元數據。經驗法則是:如果數據庫不「理解」文件的**內容**,請考慮將其移出。 –
@EugenRieck來吧,理解的參數甚至不應該是一個二進制數據類型。 – Paparazzi
有一些用例(認爲窮人的共享FS),但是OQ顯示得相當清楚,BLOB在這裏不是一個完美的解決方案。 –