問題タブ [varbinary]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - VB.NET での varbinary フィールドの処理
私たちのパートナーは、token というパラメーターを含む Web サービスを呼び出しています。トークンは 2 つの数値の MD5 ハッシュの結果であり、パートナー システムを使用してユーザーを認証するのに役立ちます。当社のパートナーは、ユーザーに 2 つの文字列を要求し、それらを連結して MD5 を介して実行し、Web サービスを呼び出します。MD5 の結果はトークンであり、文字列として送信されます。
有効なトークンを DB に格納します。SQL Server を使用してトークンを計算するため、SQL はトークンを varbinary として格納するのが最も適しているようです。これは、MD5 計算のネイティブな結果です。
同じことをしようとする 2 つのコードがあります。送信されたトークンに基づいて値を引き出す選択クエリを実行します。1つは動的クエリを使用しますが(これは問題です)、機能します。もう 1 つは、パラメーター化された (より安全な) 方法で同じことを実行しようとしますが、機能しません - トークンを見つけることができません。
これが2つの競合する試みです。まず、失敗するパラメータ化されたバージョン:
次に、動作する動的クエリ文字列バージョン:
SQL プロファイラーを実行すると、DB に対して実際に実行されるのは次のとおりです。
これは私には正しく見えません。スタック内の何かがどこかで間違った変換を行うように導く何かをしているように見えます。
それが何であるかについてのアイデアはありますか?そこに動的クエリを使用して起動することは明らかに受け入れられません。
編集:
文字列は MD5 ハッシュ結果です。Query Analyzer で機能させるには、次のようにします。
引用符がないことに注意してください。引用すると、クエリは失敗します。比較対象のフィールドは varbinary で、SQL Server が MD5 計算の結果を格納しています。
database - オブジェクトをシリアル化し、DB の varbinary フィールドに格納する
次を使用して、オブジェクトをファイルにシリアル化できます。
私がやろうとしているのは、ファイルに書き込む代わりに、DB varbinary フィールドに書き込むことです。writeStream を別のものに変更する必要があると思いますが、何ですか? そこにオブジェクトを入れて、そのオブジェクトをDBに挿入できますか(私はLINQを使用しています)。
これは機能しますか?
PS: 周りを見回しましたが、確かな例が見つかりません。
sql-server - LINQ を介して varbinary データを含む行にアクセスすると、タイムアウトが発生しますか? 直し方?
SQL にいくつかのテーブルがあります。1 つはControls (典型的な CRUD の種類のオブジェクト) で、もう 1 つはAttachmentsです。添付ファイルは、FK を介してコントロールを参照します (多数の添付ファイルが存在する可能性があります)。添付ファイルには、特に、名前とファイル データを含む varbinary 列も含まれます。
linq を通じて、Controlには Attachments プロパティがあります。
既存の添付ファイルのリストなど、多くの情報を表示するコントロール ビュー (MVC) があります。そのリストは、ヘルパー メソッドを介して行われます。
この関数は、添付ファイルをループ処理し、添付ファイル名を含む順序付けられていないリストを書き出します。
まれに、タイムアウト エラーが発生します。そのエラーの抜粋を次に示します。
そう...
これらのタイムアウトは、コントロールが既に読み込まれているのに、Attachments行が遅延読み込みされ、ヘルパーからのみ読み込まれるという事実によるものであると想定するのは正しいですか? そして、これは主に、私が必要のない 50 MB のデータを取得しているという事実によるものでしょうか?
これを防ぐにはどうすればよいですか?a) テーブルの分割を避けたい。b) コントロールに、バイナリ以外のすべてを持つ新しいクラスを返す AttachmentsNoBinary 部分プロパティを作成できますか? c)バイナリ列だけで「遅延ロード」をオンにできるようです。これは機能しますか?もしそうなら、テーブルをクリアしてからリロードする習慣があるため、DBML では何も変更しないようにしています。だから私はこの設定を失います。紛失しないようにする方法はありますか?パーシャルから設定できますか? それとも、オンになっていることをアサートできる単体テストでしょうか?
解決策:答えに基づいて、代わりに次のことに気付きました:
私は代わりに行うことができます:
最終的に varbinary 列のロードを延期することになりましたが、dbml ファイルをリセットした場合に再度そのオプションを設定することを忘れないようにと願っています。
ありがとう、ジェームズ
sql-server - SQL Server 2005/2008: Transact-SQL の varbinary(max) 列にファイルを挿入する
Transact-SQL の varbinary(max) 列にファイルを挿入することは可能ですか? はいの場合、少なくともその方法を教えてくれるコードスニペットを用意していただければ幸いです。
ありがとう
.net - SQL Server Varbinary(max): varbinary フィールドからバイトのサブセットを選択します
SQL Server 2008 で (FileStreams を使用せずに) varbinary(MAX) フィールドからバイナリ データの一部だけを読み取る最も効率的な方法は何ですか?
列にデータを書き込む場合、T-SQL で VarBinary.Write() 関数を使用して、フィールドにバイトをインクリメンタルに書き込むことができますが、データの読み取りに使用できる同様の関数はないようです。
要求したバイトだけを選択する .Net の DataReader.GetBytes() メソッドを知っていますが、これにはパフォーマンス オーバーヘッドが伴いますか? つまり、sqlserver の select はデータベース内のすべてのバイトを読み取り、getBytes() メソッドにこれらすべてのバイトを渡して、要求されたバイトのサブセットを取得しますか?
助けてくれてありがとう。
c# - Linq to SQL:Varbinary(Max)インクリメンタル読み取り
SQLServer 2008ストアドプロシージャでは、SUBSTRINGを使用して、クエリから一度にvarbinary(MAX)列の一部のみを返すことができます。
コードで直接C#経由でLINQ To SQLを使用する場合、同様の機能を利用できますか?
編集:つまり、データの一部だけが必要になるたびに、ブロブ全体ではなく、設定されたバイト数だけがデータベースからコードにロードされます。
編集:答えが1つしかないので、これはできないと思います。最初の答えを受け入れます。
sql-server - varbinary(max) 列に格納される .doc 型から結果を見つける
.doc/.docx(MS-Word)ファイルを格納したvarbinary(max)型のカラムに全文検索でクエリを書きたいです。私のクエリは、保存されたファイルに単語を含むレコードを返す必要があります。
これは可能ですか?
はいの場合、どのように?(例を書いてください)
はいの場合、他の言語 (アラビア語、ペルシャ語、または UniCode 文字など) でそれを書くことはできますか?
よろしくお願いします。
sql-server-2008 - docx ファイルを保持する varbinary 列による並べ替え
私は MS SQL 2008 サーバーを使用しており、単語文書「.docx」を格納する列があります。
ワード ドキュメント内には定義があります (つまり、用語)。データセットを返すときに定義を並べ替える必要があります。
だから基本的に...
SELECT * FROM DocumentsTable Order By DefinitionsColumn ASC.
だから私の問題は、これをどのように達成できるかということです.バイナリcomlumnは、ワードドキュメントのコンテンツではなく、バイナリ値でのみソートされますか?
全文検索/インデックスが機能するかどうか疑問に思っていました。私はすでにそれを機能させていますが、ORDER BYで使用できるかどうかはわかりません.
- よろしくお願いします。