2012-07-18 51 views
1

我正在關注MSDN的Completing a Conversation Between Instances教程。該Lesson 2: Creating the Initiator Database(末)顯示,如何在引發位點創建航線(縮短):Service Broker教程 - 一臺機器上有兩個SQL Server實例。如何路由?

... 
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' 

Lesson 3: Completing the Target Conversation Objects確實目標實例相同:

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服務器實例在單獨的硬件上運行。如果兩臺SQL服務器實例在同一臺計算機上運行,​​我應該如何更改路由或其他什麼?

回答

3

這兩個實例不能共享偵聽器端口。在第1課,你有這樣的:

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

和第2課,你有這樣的:

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

既是實例被配置爲偵聽同一TCP端口上這是行不通的。必須有所不同。讓我們使目標監聽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'';'; 
... 

其他一切保持不變。

+0

如果我理解的很好,那麼'4022'就是通常的端口號。有沒有建議使用不同的端口?我也見過某處'5022'。我知道4022實際上是按照慣例,並且幾乎可以使用任何自由港。但是,什麼是好行爲? – pepr 2012-07-19 16:52:23

+0

在示例中使用msdb有什麼原因嗎?那是什麼生產環境應該使用? – milez 2016-07-19 11:34:57

+0

@milez請另外提問。 – 2016-07-19 12:01:46

相關問題