2017-05-13 7 views
0

(datetime, float)のタプルをキャプチャするブロブを作成する必要があります。これらは、最初にタイプの列を含むSQLテーブルに収集されたサンプリングされたセンサー値です。しばらくすると、ブロブに変換して別の種類のレコードに格納する必要があります。必要に応じて、ブロブを(一時的な)表に展開し直す必要があります。8000バイトを超えるBLOBを生成するためにCLR集約関数を再読み込みするにはどうすればよいですか?

サンプルの処理が複雑になるため、未処理のSQL言語は機能の実装に適していません。一方、私はCLRアセンブリを使用するとき柔軟にする方法を実装したいと思います。しかし、集約関数が最大で8000のバイトを返すことができ

SELECT 
    MIN(UTC) AS min_utc, 
    MAX(UTC) AS max_utc, 
    Aggregates.TimeValuesBlob(UTC, sensor_value) AS result 
FROM SensorData.dbo.sensor_values 
WHERE UTC BETWEEN '2012-09-14 08:00' AND '2012-09-14 12:25' 

これまでのところ、私はこのように呼び出すことができます集約機能を実装しました。私はより大きなブロブを構築する必要があります。どうやってするか? MS-SQL Server(バージョン2012および場合によっては2008 R2)のどの機能/メカニズムを使用する必要がありますか?

CLRストアドプロシージャを記述してSQLコマンドを引数として渡す必要がありますか?上記と同じSQLコマンドを使用して内部的に解析し、自分でaggreagationを実行することは可能ですか?あるいは、アプローチを再考すべきでしょうか?

答えて

1

SQL Server Compressed Rowset Sampleあなたが使いたいかもしれない、または少なくともそのようなことをする方法についてはこちらをご覧ください。

+0

ありがとうございます。私はより多くのデータ指向のブロブを使用したい(それはDataTableのシリアル化ではない)。とにかく、この例には、それを行う方法を説明するコードフラグメントが含まれています。 – pepr

関連する問題