質問

SQL Serverデータベースとやり取りするUIフロントエンドがあり、データベース内のデータに関するレポートを実行することができます。

このUIは複数のコンピューターにインストールできますが、これまではインストール時にレポートをフォルダーに保存していましたが、これは新しいレポートを追加するたびに手動ですべてのコピーをコピーする必要があることを意味しますUIをインストールします。

.rptファイルをデータベース自体(Blobとして)に保存し、レポートを集中化してこの問題を解消する方法として、必要に応じてUIがそれらを取得するメカニズムを用意することを考えていました。

これを試した人はいますか?または、まだお持ちでない場合は、これを進める前に考慮すべきことを考えていただけますか?あなたが考えることができるヒント、トリック、または警告は私に役立つかもしれませんか?

役に立ちましたか?

解決

すばらしい質問!過去6か月以内に実際に実装したばかりなので、偶然の一致です。

あなたが提案したように、データベース内にrptファイルを保存しますが、Server 2005ではこれをイメージタイプとして保存します。うまく機能し、データベースに関する限り、注意すべき点はありません。

明らかに、この情報にアクセスする方法はAPIによって変わります。 C#を使用している場合、これは、 BinaryReader を使用してrptファイルを読み込み、バイト配列を取得することに変換されます。このバイト配列は、ストアドプロシージャなどを通じてデータベースに渡すことができます。

ブロブとServer 2008について具体的に質問していることは承知していますが、これはServer 2005とServer 2008の両方で機能します。これが少し光を放つことを願っています。

より具体的な詳細が必要な場合は、喜んで共有します!

他のヒント

ポールランダル(DBCCの一部を書いた)との素晴らしいポッドキャストです。ここでは、ブロブを処理するためのSQL Server 2008の新しいファイルストリーム機能について説明していますが、うまく機能しないファイルのサイズについても説明しています。 話の一部としてブロブとして。役立つと思います。 http://www.runasradio.com/default.aspx?showNum=74

ポールが書いた25ページのFILESTREAMホワイトペーパーがMSDNで公開されていることがわかりました。 http://msdn.microsoft.com/en-us/library/cc949109。 aspx

このホワイトペーパーで後述する調査に基づいて、256キロバイト(KB)より小さいBLOB(ウィジェットアイコンなど)はデータベース内に保存するのが適切であり、1メガバイト(MB)より大きいBLOBは最適に保存するデータベース外。 256 KB〜1 MBのサイズのストレージソリューションの場合、より効率的なストレージソリューションは、データの読み取りと書き込みの比率、および“ overwrite”の速度に依存します。データベース内のみにBLOBデータを保存する(たとえば、varbinary(max)データ型を使用する)ことは、BLOBあたり2ギガバイト(GB)に制限されています。

さて、これで、SQL SERVER、ORACLE、SQLITE、MYSQL Server、その他の価値のあるデータベースにBLOBを簡単に保存できるようになりました。 DBからバイト配列を取得した後、レポートをどのように作成したのでしょうか。

同じことをしたいのですが、考えられる唯一のことは、DBからファイルを取得し、Tempフォルダーに物理ファイルを作成してから、新しいファイルの物理アドレスを使用してクリスタルを作成することです報告書。メモリストリームまたはバイト配列からCrystalレポートを作成する方法はありますか?

.RPTファイルは、image.Storeバイト配列をデータベースとして入力し、それをストリームとして取得することにより、database(sql)に保存できます(HINT:Treat it as image file。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top