1

MSDNの「インスタンス間の会話の完了」チュートリアルに従っています。レッスン2:イニシエーターデータベースの作成(最後)は、イニシエーターサイトでルートを作成する方法(短縮)を示しています。

...
USE InstInitiatorDB;
CREATE ROUTE InstTargetRoute
WITH SERVICE_NAME =
       N'//TgtDB/2InstSample/TargetService',
     ADDRESS = N'TCP://MyTargetComputer:4022';

...

USE msdb;
CREATE ROUTE InstInitiatorRoute
WITH SERVICE_NAME =
       N'//InstDB/2InstSample/InitiatorService',
     ADDRESS = N'LOCAL'

レッスン3:ターゲット会話オブジェクトの完了は、ターゲットインスタンスでも同じことを行います。

USE InstTargetDB;
CREATE ROUTE InstInitiatorRoute
WITH SERVICE_NAME =
       N'//InstDB/2InstSample/InitiatorService',
     ADDRESS = N'TCP://MyInitiatorComputer:4022';

...

USE msdb
CREATE ROUTE InstTargetRoute
WITH SERVICE_NAME =
        N'//TgtDB/2InstSample/TargetService',
     ADDRESS = N'LOCAL';

ただし、チュートリアルでは、SQLサーバーインスタンスが別のハードウェアで実行されることを前提としています。2つのSQLServerインスタンスが同じマシンで実行されている場合、ルーティングなどをどのように変更する必要がありますか?

4

1 に答える 1

3

2つのインスタンスはリスナーポートを共有できません。レッスン1では、次のようになりました。

...
CREATE ENDPOINT InstTargetEndpoint
STATE = STARTED
AS TCP ( LISTENER_PORT = 4022 )
...

レッスン2では次のようになりました。

...
CREATE ENDPOINT InstInitiatorEndpoint
STATE = STARTED
AS TCP ( LISTENER_PORT = 4022 )
...

両方のインスタンスが同じTCPポートでリッスンするように構成されているため、これは機能しません。1つは異なっている必要があります。ターゲットに4023でリッスンさせましょう:

...
CREATE ENDPOINT InstTargetEndpoint
STATE = STARTED
AS TCP ( LISTENER_PORT = 4023 )
...

次に、イニシエーターからターゲットへのルートは、ポート4023を指定する必要があります。

...
CREATE ROUTE InstTargetRoute
WITH SERVICE_NAME =
       N''//TgtDB/2InstSample/TargetService'',
     ADDRESS = N''TCP://MyTargetComputer:4023'';';
...

他のすべては同じままです。

于 2012-07-18T20:40:39.207 に答える