問題タブ [service-broker]

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.

0 投票する
1 に答える
567 参照

sql-server - Service Broker の秘密鍵の問題

MSDN のチュートリアルに従って、Service Broker を介して 1 つの SQL エンジン内の 2 つの SQL インスタンス間で会話をしようとしています。簡単にするために、Encryption = OFF でダイアログを送信するので、Master key や Certificate... を処理する必要がなく、ローカル ワークステーションで機能します。

DECLARE @RequestMsg NVARCHAR(100);

取引を開始します。

BEGIN DIALOG @InitDlgHandle サービス [//InstDB/2InstSample/InitiatorService] からサービス N'//TgtDB/2InstSample/TargetService' への契約 [//BothDB/2InstSample/SimpleContract] WITH ENCRYPTION = OFF;

SELECT @RequestMsg = N'Message for Target service.';

会話時に送信 @InitDlgHandle メッセージ タイプ [//BothDB/2InstSample/RequestMessage] (@RequestMsg);

@RequestMsg を SentRequestMsg として選択します。

コミットトランザクション; 行く

ただし、サーバーに移動した後、同じスクリプトを使用すると、initDB がメッセージを送信した後、ターゲット DB は SQL トレースで「プライベート キーが見つかりません。メッセージを配信できません」と表示し続けます。

私の質問は、暗号化 = OFF を設定したため、ターゲット DB に証明書が見つからないのはなぜですか?

SQL 2005 SP2、Windows 2003 を使用

任意の入力に感謝します。

0 投票する
3 に答える
2518 参照

asp.net - クエリ通知エラー

SQL クエリ通知サービスに関して、この奇妙な問題があります。QN サービスで実行されているメインの Web アプリケーションがあるため、Web のキャッシュ アイテムは、監視データが変更されたときに SQL から通知を受け取ります。そして、それはうまくいきます。奇妙なのは、他のサポート Web サービスが QN サブスクリプションを SQL 2005 SP2 に登録しようとすると、このエラーが発生することです。

「システム例外: コマンドが複数回実行されているサーバーに対して SqlDependency.Start が呼び出されましたが、現在のコマンドに一致するサーバー/ユーザー/データベースの Start() 呼び出しがありません」

このエラーは、特定のインスタンス DB に対して SQLDependency で SQL クエリを実行したときにのみ発生します。他のインスタンス DB は問題なく動作します。

QN / Service Broker の問題に関するリソースはあまりありません。似たような経験をしたことがある人は、知識を共有できれば幸いです。

0 投票する
4 に答える
158984 参照

sql-server-2005 - 時間がかかりすぎる SQL Server Broker を有効にする

Microsoft SQL Server 2005 を使用しており、これらの T-SQL を使用してデータベースの Broker を有効にしようとしました:

処理にAlter Database時間がかかります。30 分以上経過しましたが、まだ実行中です。他の何かを待っているのか、サービス ブローカーの下のすべてのメッセージ、コントラクト、キュー、およびサービスを削除するなど、最初に何かをクリーンアップする必要があるのか​​ わかりませんか?

0 投票する
2 に答える
1864 参照

sql-server - SQL Service Broker メッセージの漢字

データベースに複数の SQL Service Broker キューをセットアップしましたが、この問題はこれまで見たことがありません。XML を含むメッセージが、ほとんどが漢字のように見えるものに変換されています。メッセージ キューに入れる前に、XML を格納している変数を確認すると、英語であり、適切に XML 形式であることがわかります。キューから選択すると、漢字が表示されます。これらの文字は、外部の C# アプリケーションを使用してキューからプルしたときに受け取るものでもあります。奇妙なことに、DBArtisan を使用してキューを表示すると、整形式の XML が表示されます。

以下の XML をキューに配置すると、以下の漢字に変換されます。


以下は、メッセージをキューに入れて選択するために使用している T-SQL です。

0 投票する
1 に答える
12423 参照

sql-server-2005 - SQLServer2005を使用するServiceBroker-メッセージがキューに残っている

単純なサービスブローカーの実装を構成しています。ローカルでは、SQL Server 2008 Expressを使用しており、すべてが正常に機能します。コードが運用サーバー(SQL SERVER 2005)で実行されると、メッセージはレシーバーキューに留まります。followindコードは不完全ですが、キューとサービスが基本的にどのように構成されているかを示しています。

サービスがインストールされると、次のようにメッセージが送信されます。

すべてのメッセージは「MyReceiverQueue」でスタックします。'spProcessMessage'を手動で実行すると、メッセージは正常に処理されます。

さらにいくつかの詳細:
-sys.transmission_queueが空です -sys.conversation_endpoints、両方のサービスが「CONVERSING」であると述べています -ブローカーが有効であり、DBがSQL2005互換として構成されています


これらのメッセージが自動的に処理されない理由はありますか?

お時間をいただき、誠にありがとうございます。

-

OK、少し遊んだ後、ssbdiagnoseが機能するようになりました。Remusがコメントしたように、これはC:\ Program Files \ Microsoft SQL Server \ 100 \ Tools\Binnにあります。私はそれをこのようにローカルで動作させました:

次に、本番サーバーで試してみました。

最初に検出されたエラー:

サーバー上の別のデータベースには、サービスブローカー用の同一のGUIDがありました。GUIDを再生成するだけで済みました。

2番目のエラーは、ストアドプロシージャを実行するためのユーザーのアクセス許可に関係していました。

これらの権限をアップグレードした後、すべてが正しく機能し始めました。

正しい方向を示してくれたRemusに感謝します。私は少し長かったですが、詳細が他の開発者に役立つことを願っています。

0 投票する
2 に答える
7532 参照

sql-server - Sql Server Service Broker: 単純なキュー シナリオの会話を構築する方法は?

私は Sql Server Service Broker の初心者であり、Service Broker を (一見) 単純なユース ケースに設定するための最良の方法を把握しようとしています。1 つのアプリケーションが作業項目を別のアプリケーションがそのキューから作業項目を取得して処理します。最初のアプリケーションが 2 番目のアプリケーションからステータス メッセージを取得する必要はありません。キューを単一の Sql Server インスタンスに配置したい。

私を最も混乱させているのは、会話/ダイアログがこの状況にどのように関係しているかです。会話/ダイアログのコンテキストでのみメッセージを送受信できることは知っていますが、2 つのアプリケーション間でやり取りがないため、いつ新しい会話を作成するのが適切なのか迷っています。2つの極端な選択肢は次のようです。

  • 作業項目をキューに入れるたびに、新しい会話を開始します。そのため、各会話には 1 つのメッセージしか含まれません。
  • 展開時に、1 つの無期限の会話を手動で作成します。作業項目をキューに入れるときは、常にその単一の会話の一部として送信します。

これらのルートのいずれかを選択すると、どのような結果になるでしょうか?

また、最初のケースでは、Sql Server がリソースを内部的にクリーンアップできるようにするために、いくつかの END CONVERSATION を実行する必要があるようです。これらをいつ配置するのが正しいかについてのガイダンスはありますか? (または、最終的には会話がタイムアウトになることに依存する方が良い可能性があるでしょうか?)

0 投票する
1 に答える
6565 参照

sql-server - Sql Server Service Broker 会話グループ

Service Broker の会話グループについて誰か説明できますか?

現在、サービス ブローカーを使用して、ある SQL サーバーから別の SQL サーバーにメッセージを送信しています。送信側サーバーでは、受信側で順次処理されるようにメッセージを関連付けようとしています。ドキュメントに基づくと、会話グループはこれに最適なようですが、受信サーバーでは、メッセージの送信時に指定した会話グループとは別の会話グループにメッセージが割り当てられます。

Web を検索したところ、この動作が意図されているように見えることがわかりました ( http://social.msdn.microsoft.com/forums/en-US/sqlservicebroker/thread/baf48074-6804-43ab-844a-cb28a6dce02b/ ) 、しかし、( http://msdn.microsoft.com/en-us/library/ms178624.aspx)からの構文の有用性について混乱しています

会話グループが送信者からのメッセージに遭遇せず、同じ会話グループ ID で送信されたメッセージが受信側で同じ会話グループ ID を持っていない場合、上記のコードのポイントは何ですか?

0 投票する
2 に答える
2479 参照

sql-server - Service Broker が有害なメッセージを検出することについて攻撃的でないようにしますか?

Sql Service Broker は、次のヒューリスティックを使用して、アプリケーションが有用な作業を行うのを妨げているメッセージがキューにあるかどうかを判断します。

「Service Broker は、自動有害メッセージ検出を提供します。RECEIVE ステートメントを含むトランザクションが 5 回ロールバックすると、Service Broker は、キューの状態を自動的にオフに設定することにより、トランザクションがメッセージを受信したすべてのキューを無効にします。」( http://msdn.microsoft.com/en-us/library/ms166137.aspx )

私はこの基本的なアプローチで問題ありませんが、再試行の回数を 5 回から 20 回程度に変更する方法はありますか?

これが役立つ理由は、キューを処理するために現在使用しているコードが、約 10 個のワーカー スレッドを持つ Sql Server の外部のアプリであり、それぞれが独立した SqlConnection を持ち、それぞれが独自の独立したスレッドを実行するためです。 RECEIVE ステートメント。このアプリケーションがなんらかの理由で停止した場合、ワーカー スレッドごとに個別のロールバック トランザクションが発生する可能性があります。これは、キューを無効にするのに十分なロールバックです。対照的に、キューを無効にせずにアプリケーションを強制終了できるようにしたいと考えています。単一の SqlConnection を使用するようにアプリケーションを書き直す必要があるかもしれませんが、次のように言うことができれば、はるかに簡単になります。

そのようなことは可能ですか?

0 投票する
1 に答える
1384 参照

sql-server - SQLServerメッセージブローカー-外部アクティベーション

制限されたネットワーク内にSQLServerがあります。どういうわけか外部からデータを取得する必要があります。

メッセージブローカーの利用を活用したいと思います。私の考えでは、外部データベースはメッセージをキューに入れ、制限されたLANの内部にあるサービスがこれらのメッセージをリッスン(ポーリング?)してからそれに基づいて動作する必要があります。外部キューに制限付きLANへの通常のブローカー会話を開始させることはできません。

私の質問は、制限されたLAN内に座って新しいメッセージをリッスンし、それらに基づいて行動するブローカーの外部アクティベーターを確認する必要があるかどうかです。誰かがこれを経験したことがありますか。外部アクティベーターのドキュメント/例は、地上ではかなり薄く、モノローグはメッセージブローカーではまだサポートされていません。

msmqはより良いオプションですか?

0 投票する
1 に答える
503 参照

c# - DataSet を使用した SQL Server サービス ブローカー

SQL Server 2005 でコンソール アプリケーションをService Brokerから実行するように変換しています。

アプリケーションはDataSetを多用します。

DataSet は SQLCLR で動作するはずですか? 使用する接続を定義するにはどうすればよいですか? これに関するドキュメントはありますか?

ご協力いただきありがとうございます!