2017-02-03 9 views
0

私は、エンティティフレームワークで構築されたWebアプリケーションで使用されるデータベースのほとんどがSQLオプションENABLE_BROKERをONに設定していることに気付きました。なぜENABLE_BROKERを設定したくないですか?

これは正常ですか?これをすべてのデータベースに対して設定すること、またはすべてのデータベースでそれを無効にすることの意義は何ですか? オーバーヘッドが関係していますか?そうでない場合は、オーバーヘッドに設定するのが安全ですか?

私はその目的と効果を実際に理解していません。

答えて

1

Service Brokerは、新しいデータベースがT-SQL(例:CREATE DATABASE NewDatabase;)で作成されたときに、デフォルトで有効になっています。ただし、SQL Server Management Studioは、[データベースの作成]ダイアログのオプションページで指定されたSBオプションを使用します。デフォルトはfalseです。 SBを有効にするために、またはENABLE_BROKERオプションを持つALTER DATABASEオプションを必要とします。

SBが有効になっているが使用されていない場合、コストはほぼゼロです。 SB unユーザーデータベースを無効にすると、もちろん、アプリケーションがキューイングおよび非同期メッセージ処理に直接その機能を使用するのを防ぐことができます。また、SqlDependency/QueryNotificationsなどのコンポーネントにも依存します。 msdbシステムデータベースは、データベースメールなどの機能にSBを使用します。

+0

新しいデータベースではデフォルトでオンに設定されているようには見えません。これは、モデルデータベースの設定をオンにした場合、ご使用の環境に該当する可能性がありますが、デフォルトのインストールではそのように設定されているようには見えません。また、サービスブローカーをオンまたはオフにするには、排他的なデータベースロックが必要です。トグルすることは軽く入り込むことではありません! –

+1

@BenThul、SQL Serverではなくオプションを切り替えるSSMSであることを明確にするために私の答えを更新しました。実際のDBAはT-SQLを使用します:-) –

関連する問題