Voorbeeld van servicescript

van toepassing op:SQL ServerAzure SQL Managed Instance

Dit Transact-SQL codevoorbeeld definieert een service waarmee niet-getypte XML-documenten worden gearchiveerd. Er zijn twee scripts opgenomen: het contractscript en het servicedefinitiescript. Het contractscript definieert de berichttypen en het contract voor de service. De definitie van het berichttype en de contractdefinitie moeten overeenkomen voor zowel de initiërende service als de doelservice. Daarom zijn de definities opgenomen in een afzonderlijk servicedefinitiescript dat kan worden gedistribueerd naar de databases die als host fungeren voor de initiërende service. Het servicedefinitiescript definieert de service zelf. Dit script mag alleen worden uitgevoerd in een database waarmee de doelservice wordt geïmplementeerd.

Notitie

Het servicedefinitiescript definieert de doelservice, maar bevat geen implementatie van de service.

Contractscript

Notitie

De codevoorbeelden in dit artikel zijn getest met behulp van de AdventureWorks2025 voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina.

-- The contract script contains definitions that must be present
-- for both the initiating service and the target service.
USE AdventureWorks2008R2;
GO

-- Create messages for each broker-to-broker
-- communication needed to complete the task.

-- Message for the initiator to send XML
-- to be archived.
CREATE MESSAGE TYPE [//Adventure-Works.com/messages/ArchiveXML]
    VALIDATION = WELL_FORMED_XML;
GO

-- Message to return event archiving information.
CREATE MESSAGE TYPE [//Adventure-Works.com/messages/AcknowledgeArchiveXML]
    VALIDATION = WELL_FORMED_XML;
GO

-- Create a service contract to structure
-- an event archiving conversation, using
-- the message types defined above.
CREATE CONTRACT [//Adventure-Works.com/contracts/ArchiveXML/v1.0]
    ([//Adventure-Works.com/messages/ArchiveXML] SENT BY INITIATOR,
    [//Adventure-Works.com/messages/AcknowledgeArchiveXML] SENT BY TARGET);
GO

Servicedefinitiescript

-- This script defines the target service. The objects created
-- by this script are only required in a database that hosts
-- the target service.
USE AdventureWorks2008R2;
GO

-- Create the service queue that will receive
-- messages for conversations that implement
-- the ArchiveXML contract.
CREATE QUEUE ArchiveQueue;
GO

-- Create the service object that exposes the
-- ArchiveEvents service contract and maps
-- it to the ArchiveQueue service queue.
CREATE SERVICE [//Adventure-Works.com/ArchiveService]
    ON QUEUE ArchiveQueue
    ([//Adventure-Works.com/contracts/ArchiveXML/v1.0]);
GO