2017-07-05 4 views
0

SQL Serverトランスポートを使用するNServiceBus 4.xエンドポイントをインストールしています。 ...(デフォルトでローカルシステムとして実行されるタコの展開、経由)サービスを実行しているユーザーとして、SQL ServerトランスポートとWindows認証を備えたNServiceBusエンドポイントをインストールする必要がありますか?

.\NServiceBus.Host.exe /install NServiceBus.Production /serviceName=$name /username:"$username" /password:"$password

をインストーラを実行している間...私はエラーを取得する:

Failed to execute installers: System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'DOMAIN\MACHINENAME$'.

これが期待されています実行時にインストーラがSQL Serverに接続した場合の動作:ローカルシステムは、コンピュータアカウントからコンピュータアカウントになり、コンピュータアカウントはトランスポートデータベースにアクセスできなくなります。

ただし、ローカルシステムとしてエンドポイントを実行するつもりはありません。代わりに、私はトランスポートデータベースにアクセスできるドメインサービスアカウントを使用する予定です...

トランスポートにアクセスできないユーザーとしてSQL Serverトランスポートを使用してNServiceBusエンドポイントをインストールすることは可能ですかデータベース?

ボーナスに関する質問:4.x以降のNServiceBusのバージョンでこの動作が変更されていますか?

+1

私たちは、私の同僚であるラモンが明日あなたに戻ってくるのを見ています –

答えて

2

ここでの問題は、NServiceBus.Host.exeがOctopus Deployと同じ資格で実行され、/installがNServiceBusインストーラを実行するということです。

いくつかの選択肢:また、この展開フェーズ中にデータベースのスキーマの変更を行っていることができる権限を持つ

  1. 実行タコエージェントの展開。

  2. ホストを直接実行する代わりに、適切な権限を持つ資格情報を使用してホストを実行するように、異なる資格情報を持つシェルを起動します。

  3. ホストを使用しないでください。自己ホスティングを使用してください。そのサービスをsc.exeで登録してWindowsサービスを正しい資格情報で登録し、endpointConfiguration.EnableInstallers()を使用してインストーラを実行する必要があるかどうかを制御します。

  4. https://docs.particular.net/nservicebus/hosting/windows-service#installation
  5. 使用セルフホスティングのようにすると、(3)、endpointConfiguration.EnableInstallers()が、スクリプトのすべてのタスクを使用していないと、これらは「窓から独立して実行してみましょうサービス 'の登録タスク。代わりにsc.exeを使用してNServiceBus.Host.exeを登録し、/installが実行されないようにすることもできます。

    • これは、ほとんどのスクリプトを自分で生成することを意味します。一部のコンポーネントは、スクリプトジェネレータを持っていますが、私たちのドキュメントは、私はちょうど常にエンドポイントでendpointConfiguration.EnableInstallers()を起動したりしない助言するスクリプト

に関するガイダンスがたくさんあります。デプロイメントとランタイムを区別する必要があります。デプロイメント時には、テーブル、スキーマなどを作成しますが、実行時にそのテーブルにテーブルを作成または削除し、最小限の特権を実行する権限を持つべきではありません。

関連する問題