1

SQL 2008では、次の方法で与えられたGUIDを単純に取得する代わりに、service_broker_guidを指定する方法があります。

ALTER DATABASE MyDB SET NEW_BROKER

私たちの現在の(私の意見では壊れた)リリース方法は、相互依存関係にある2つのデータベースを復元することです。1つは「ソース」データベースであり、もう1つはスタースキーマBIデータベースです。回帰テスト計画の一部は、異なるサーバー間、さらには同じサーバー上でも、両方のデータベースのバックアップを「ゴールド」状態で復元することです。

ほとんどの場所ではBROKER_INSTANCE変数は必要ないため、通常、ルートにはBROKER_INSTANCE変数を含めません(つまり、SERVICE_NAMEとADDRESSの組み合わせで配信を保証できます)。ただし、両方がブローカーを有効にして同じインスタンスで2つのデータベースを実行している場合、そのうちの1つに新しいBROKER_IDが必要になります。さらに、同じADDRESSに2つのSERVICE_NAMEがあるため、これらのデータベースへのすべてのルートにBROKER_INSTANCE修飾子が必要になります。

Visual Studio Database Professionalを使用してビルド出力スクリプトを生成します。事前に知っていない限り、SQLCMD変数置換手法の一部としてBROKER_INSTANCEを含める簡単な方法はありません。

4

1 に答える 1

1

いいえ。NEW_BROKERは新しいGUIDを生成します。

特定のGUIDを使用する方法はなく、それは非常に意図的なものです。この質問をしている根本的な問題が何であるかを説明すれば、おそらく私たちはその問題の解決に向けて取り組むことができます。

編集後。

ブローカーインスタンスとルーティング情報は、ランタイムのデプロイメント固有の情報と見なされます。そのため、VSGDRプロジェクトまたは一連のSQLCMDスクリプトが使用したい固定の所定の値を受け入れるようには設計されていません。さらに、broker_instance_idは、実際には一意のデータベースインスタンス固有の値であることが意図されており、ユーザーが独自の値を指定できるようにすると、すぐに重複が発生し、メッセージを交換しようとする会話エンドポイントが混乱します。

あなたが直面している問題は正当なものです。ルーティング情報の展開を自動化する方法(および、証明書の展開と交換の自動化、ログインなしのユーザーの構成と適切なアクセス許可の付与、リモートサービスバインディングとサービスブローカートランスポートエンドポイントの構成の関連する問題)。これを行うためのウィザードはありません。Questには、これを実際に処理する一連のツールがあります。

昔々、私はssbslm.exeと呼ばれるツールを作成しました。このツールは、このプロセス全体を自動化し、スクリプトから使用できるように設計されています。このツールは、2つの任意のサービス間のルート、証明書、およびエンドポイントを設定するためにすべてを実行しました。このツールはもう利用できませんが(なぜそうなるのか、長くて退屈な話です)、この話の要点は、それを書くのはそれほど難しいことではないということです。その日の数日前に私を連れて行った。

于 2011-03-09T05:50:02.613 に答える