第 1 課:建立目標資料庫

新增: 2007 年 9 月 15 日

在本課程中,您將學習建立目標資料庫以及對起始端資料庫不具相依性的所有 Service Broker 目標物件。您要從正在同一部電腦上當做 Database Engine 目標執行個體執行的 Management Studio 副本中執行這些步驟。

程序

建立 Service Broker 端點

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可為 Database Engine 的這個執行個體建立 Service Broker 端點。Service Broker 端點會建立傳送 Service Broker 訊息的目的網路位址。這個端點會使用 TCP 通訊埠 4022 的 Service Broker 預設值,並指定 Database Engine 遠端執行個體要使用 Windows 驗證連接來傳送訊息。

    Windows 驗證適用於兩部電腦都位在相同網域或信任網域中的情況。如果電腦不是在信任網域中,請對該端點使用憑證安全性。如需詳細資訊,請參閱<如何:建立 Service Broker 傳輸安全性的憑證 (Transact-SQL)>。

    USE master;
    GO
    IF EXISTS (SELECT * FROM master.sys.endpoints
               WHERE name = N'InstTargetEndpoint')
         DROP ENDPOINT InstTargetEndpoint;
    GO
    CREATE ENDPOINT InstTargetEndpoint
    STATE = STARTED
    AS TCP ( LISTENER_PORT = 4022 )
    FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
    GO
    

建立目標資料庫、主要金鑰和使用者

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上。變更 CREATE MASTER KEY 陳述式上的密碼。然後執行此程式碼,即可建立本教學課程要使用的目標資料庫。依預設,新的資料庫會將 ENABLE_BROKER 選項設為開啟。程式碼也會建立用來支援加密及遠端連接的主要金鑰和使用者。

    USE master;
    GO
    IF EXISTS (SELECT * FROM sys.databases
               WHERE name = N'InstTargetDB')
         DROP DATABASE InstTargetDB;
    GO
    CREATE DATABASE InstTargetDB;
    GO
    USE InstTargetDB;
    GO
    CREATE MASTER KEY
           ENCRYPTION BY PASSWORD = N'<EnterStrongPassword1Here>';
    GO
    CREATE USER TargetUser WITHOUT LOGIN;
    GO
    

建立目標憑證

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上。變更 BACKUP CERTIFICATE 陳述式中指定的檔案名稱,改以參考您系統上的資料夾。然後執行此程式碼,即可建立用來加密訊息的目標憑證。您所指定的資料夾必須擁有權限,可防止您的 Windows 帳戶及 Database Engine 執行個體執行使用的 Windows 帳戶以外的帳戶來存取。在第 2 課中,您必須手動將 InstTargetCertificate.cer 檔案複製到可從起始端執行個體存取的資料夾。

    CREATE CERTIFICATE InstTargetCertificate 
         AUTHORIZATION TargetUser
         WITH SUBJECT = 'Target Certificate',
              EXPIRY_DATE = N'12/31/2010';
    
    BACKUP CERTIFICATE InstTargetCertificate
      TO FILE = 
    N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer';
    GO
    

建立訊息類型

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可建立交談的訊息類型。此處指定的訊息類型名稱和屬性必須與您要在下一課 InstInitiatorDB 中建立的完全相同。

    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/RequestMessage]
           VALIDATION = WELL_FORMED_XML;
    CREATE MESSAGE TYPE [//BothDB/ 2InstSample/ReplyMessage]
           VALIDATION = WELL_FORMED_XML;
    GO
    

建立合約

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可建立交談的合約。此處指定的合約名稱和屬性必須與您要在下一課 InstInitiatorDB 中建立的合約完全相同。

    CREATE CONTRACT [//BothDB/ 2InstSample/SimpleContract]
          ([//BothDB/ 2InstSample/RequestMessage]
             SENT BY INITIATOR,
           [//BothDB/ 2InstSample/ReplyMessage]
             SENT BY TARGET
          );
    GO
    

建立目標佇列和服務

  1. 複製下列程式碼並在 [查詢編輯器] 視窗中貼上,然後執行,即可建立用來做為目標的佇列和服務。CREATE SERVICE 陳述式會讓服務與 InstTargetQueue 產生關聯,使得傳送至服務的所有訊息都可以在 InstTargetQueue 中收到。CREATE SERVICE 也會指定,只有使用您先前建立之 //BothDB/ 2InstSample/SimpleContract 的交談才可以使用此服務做為目標服務。

    CREATE QUEUE InstTargetQueue;
    
    CREATE SERVICE [//TgtDB/2InstSample/TargetService]
           AUTHORIZATION TargetUser
           ON QUEUE InstTargetQueue
           ([//BothDB/2InstSample/SimpleContract]);
    GO
    

後續的步驟

您已成功建立教學課程要使用的資料庫。接下來,您將會建立 InstInitiatorDB,並使用支援 Service Broker 交談起始端的必要物件來加以設定。請參閱<第 2 課:建立起始端資料庫>。

請參閱

其他資源

BACKUP CERTIFICATE (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
Service Broker 對話安全性
交談架構
服務架構

說明及資訊

取得 SQL Server 2005 協助