0

ローカル データベースを使用して、C# アプリケーションでクエリ通知を正常に使用しました。ただし、接続文字列を実際のデータベース (ローカルではない) に変更すると、エラーが発生します。両方のデータベースが同一であることに注意してください+キューとサービスなどは両方のデータベースで同一です。私がしたことは、接続文字列を交換することだけでした ==> その結果、キュー サブスクリプションの作成に失敗しました。ローカル DB とリモート DB の依存関係に関して不足している点がある場合は、アドバイスしてください。

例外を発生させるコードの一部:

private void Handle_OnChange(object sender, SqlNotificationEventArgs e)
    {

        if (e.Type != SqlNotificationType.Change)
            throw new ApplicationException("Failed to create queue notification subscription!");
4

1 に答える 1

1

問題を解決するために丸一日を費やした後、何が原因であるかを突き止めました。OnChange イベントで発生したすべての SqlNotificationEventArgs.Info を切り替えた後、SQL サーバー 2000(80) 互換性レベルで実行されていたため、SQL サーバーの「オプション セット」が正しくないことを示す SqlNotificationInfo.Options 応答に気付きました。オプション セットは次のようになっている必要があります。

ANSI_NULLS ON
ANSI_PADDING ON
ANSI_WARNINGS ON
CONCAT_NULL_YIELDS_NULL ON
QUOTED_IDENTIFIER ON
NUMERIC_ROUNDABORT OFF
ARITHABORT ON

これらのオプションを設定した後、Sqldependency は期待どおりに機能しました。

于 2014-05-13T06:24:10.507 に答える