2008-10-08 45 views
5

我有一個涉及並操縱SQL Server數據庫的UI前端,它可以做的一件事就是運行數據庫中數據的報告。在數據庫中存儲Crystal Reports文件?

此用戶界面可以安裝在多臺計算機上,到目前爲止,我只是將報告保存在安裝文件夾中,但這意味着任何時候添加新報告都必須手動複製到每個單個用戶界面安裝在那裏。

我正在考慮將.rpt文件存儲在數據庫本身(作爲Blob),並有一些UI需要的機制以便在需要時獲取它們,以便集中報告並消除此問題。

有沒有人試過這個,並且它工作得很好?或者,如果你還沒有,那麼在推進之前,你能想到我應該考慮的任何事情嗎?是否有任何提示,技巧或注意事項可以幫助我?

+0

檢查:[在數據庫中存儲和檢索Crystal報告](http://natrajt.blogspot.co.uk/2009/08/storing-and-retrieving-crystal-reports.html)。 – kenorb 2015-03-18 12:39:30

回答

3

非常好的問題!這有點巧合,因爲我們實際上在過去六個月內實施了這個計劃。

正如您所建議的那樣,我們將rpt文件存儲在數據庫中,但在Server 2005中將其作爲Image類型進行存儲。它工作得很好,就數據庫而言,確實沒有想到的警告。

顯然,您訪問這些信息的方式隨API而變化。如果您使用的是C#,則轉換爲使用BinaryReader加載rpt文件,獲取字節數組。這字節數組然後可以傳遞到數據庫,通過存儲過程等

我知道你具體問斑點和Server 2008,但這個工程既Server 2005和Server 2008的在。希望這有點亮。

如果您需要更具體的細節,我很樂意分享!

+0

謝謝,這非常有幫助。我一定會問你是否還有其他問題:)。 – 2008-10-09 15:56:26

1

這裏是Paul Randal的偉大播客(他寫了DBCC的一部分!),他們談論了sql server 2008中用於處理blob的新文件流功能,但它們也涉及到文件的大小,以及 作爲談話的一部分。我認爲這會對你有所幫助。 http://www.runasradio.com/default.aspx?showNum=74

我剛剛發現Paul寫的25頁FILESTREAM白皮書已經發布在MSDN上。 http://msdn.microsoft.com/en-us/library/cc949109.aspx

根據本白皮書後面引用的研究,小於256千字節(KB)的BLOB(例如小部件圖標)最好存儲在數據庫中,大於1兆字節(MB)的BLOB最好存儲在外部數據庫。對於大小在256 KB和1 MB之間的用戶,更高效的存儲解決方案取決於數據的讀取和寫入比率以及「覆蓋」率。僅在數據庫內存儲BLOB數據(例如,使用varbinary(max)數據類型)每個BLOB限制爲2千兆字節(GB)。

+0

謝謝,這看起來相當有幫助。 – 2008-10-09 15:57:06

1

好吧,現在我們都可以輕鬆地將BLOB存儲在SQL SERVER,ORACLE,SQLITE,MYSQL Server和任何其他任何值得擁有的數據庫中。我想知道的是,當你從數據庫中獲得字節數組後,你是如何創建報告的?

我想做同樣的事情,但我能想到的唯一事情就是從數據庫中拉出文件,在Temp文件夾中創建一個物理文件,然後使用新文件的物理地址創建水晶報告。有沒有什麼辦法可以從存儲流或字節數組創建Crystal Report? 。

-1

.RPT文件可以由具有其鍵入作爲image.Store字節數組到數據庫,然後檢索它作爲流被存儲在數據庫(SQL)(HINT:把它作爲圖像文件。)

相關問題