CREATE SERVICE (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Maakt een nieuwe dienst aan. Een Service Broker-dienst is een naam voor een specifieke taak of set taken. Service Broker gebruikt de naam van de dienst om berichten te routeren, berichten naar de juiste wachtrij binnen een database te leveren en het contract voor een gesprek af te dwingen.

Transact-SQL syntaxis-conventies

Syntax

CREATE SERVICE service_name  
   [ AUTHORIZATION owner_name ]  
   ON QUEUE [ schema_name. ]queue_name  
   [ ( contract_name | [DEFAULT][ ,...n ] ) ]  
[ ; ]  

Arguments

service_name
Is de naam van de dienst die je moet creëren. Een nieuwe dienst wordt aangemaakt in de huidige database en is eigendom van de in de AUTHORIZATION clausule gespecificeerde opdrachtgever. Server-, database- en schemanamen kunnen niet worden gespecificeerd. De service_name moet een geldige sysnaam zijn.

Note

Maak geen dienst die het trefwoord ANY gebruikt voor de service_name. Wanneer je voor een servicenaam in CREATE BROKER PRIORITYspecificeertANY, wordt de prioriteit voor alle services meegenomen. Het is niet beperkt tot een dienst waarvan de naam ELKE is.

AUTHORIZATION owner_name
Stelt de eigenaar van de dienst in op de gespecificeerde databasegebruiker of rol. Wanneer de huidige gebruiker dbo of sa is, kan owner_name de naam zijn van elke geldige gebruiker of rol. Anders moet owner_name de naam zijn van de huidige gebruiker, de naam van een gebruiker waarvoor de huidige gebruiker IMPERSONATE-toestemming heeft, of de naam van een rol waartoe de huidige gebruiker behoort.

OP QUEUE [ schema_name]queue_name
Specificeert de wachtrij die berichten voor de service ontvangt. De wachtrij moet in dezelfde database bestaan als de service. Als er geen schema_name wordt gegeven, is het schema het standaardschema voor de gebruiker die de instructie uitvoert.

contract_name
Specificeert een contract waarvoor deze dienst een doelwit kan zijn. Serviceprogramma's starten gesprekken met deze dienst met behulp van de gespecificeerde contracten. Als er geen contracten zijn gespecificeerd, mag de dienst alleen gesprekken starten.

[DEFAULT]
Specificeert dat de dienst een doelwit kan zijn voor gesprekken die volgen op het DEFAULT contract. In de context van deze clausule DEFAULT is geen sleutelwoord en moet het worden afgebakend als een identificatie. Het DEFAULT contract staat toe dat beide partijen van het gesprek berichten van het type DEFAULTbericht sturen. Berichttype DEFAULT gebruikt validatie GEEN.

Remarks

Een dienst stelt de functionaliteit bloot die wordt geleverd door de contracten waarmee het is gekoppeld, zodat deze door andere diensten gebruikt kunnen worden. De CREATE SERVICE verklaring specificeert de contracten waarvoor deze dienst het doel is. Een dienst kan alleen doelwit zijn voor gesprekken die gebruikmaken van de contracten die door de dienst zijn gespecificeerd. Een dienst die specificeert dat er geen contracten zijn, stelt geen functionaliteit bloot aan andere services.

Gesprekken die via deze dienst worden gestart, kunnen elk contract gebruiken. Je maakt een dienst zonder contracten te specificeren wanneer de dienst alleen gesprekken initieert.

Wanneer Service Broker een nieuw gesprek van een externe dienst accepteert, bepaalt de naam van de doeldienst de wachtrij waarin de broker berichten in het gesprek plaatst.

Permissions

Toestemming voor het aanmaken van een service is standaard beschikbaar voor leden van de db_ddladmindb_owner of vaste databaserollen, of de sysadmin vaste serverrol. De gebruiker die de instructie uitvoert CREATE SERVICE , moet toestemming hebben REFERENCES voor de wachtrij en alle contracten gespecificeerd.

REFERENCES De toestemming voor een dienst is standaard voor de eigenaar van de service, leden van de db_ddladmindb_owner of vaste databaserollen, of leden van de sysadmin vaste serverrol. SEND Rechten voor een service zijn standaard voor de eigenaar van de service, leden van de db_owner vaste databaserol, of leden van de sysadmin vaste serverrol.

Een dienst mag geen tijdelijk object zijn. Servicenamen die beginnen met # zijn toegestaan, maar zijn permanente objecten.

Examples

A. Het creëren van een dienst met één contract

Het volgende voorbeeld creëert de service //Adventure-Works.com/Expenses op de ExpenseQueue wachtrij in het dbo schema. Dialogen die zich richten op deze dienst moeten het contract //Adventure-Works.com/Expenses/ExpenseSubmissionvolgen.

CREATE SERVICE [//Adventure-Works.com/Expenses]  
    ON QUEUE [dbo].[ExpenseQueue]  
    ([//Adventure-Works.com/Expenses/ExpenseSubmission]) ;  

B. Het creëren van een dienst met meerdere contracten

Het volgende voorbeeld creëert de service //Adventure-Works.com/Expenses in de ExpenseQueue wachtrij. Dialogen die zich richten op deze dienst moeten ofwel het contract //Adventure-Works.com/Expenses/ExpenseSubmission of het contract //Adventure-Works.com/Expenses/ExpenseProcessingvolgen.

CREATE SERVICE [//Adventure-Works.com/Expenses] ON QUEUE ExpenseQueue  
    ([//Adventure-Works.com/Expenses/ExpenseSubmission],  
     [//Adventure-Works.com/Expenses/ExpenseProcessing]) ;  

C. Een dienst creëren zonder contracten

Het volgende voorbeeld creëert de servicewachtrij //Adventure-Works.com/Expenses on the ExpenseQueue . Deze dienst bevat geen contractinformatie. Daarom kan de service alleen de initiator van een dialoog zijn.

CREATE SERVICE [//Adventure-Works.com/Expenses] ON QUEUE ExpenseQueue ;  

Zie ook

ALTER SERVICE (Transact-SQL)
DROP SERVICE (Transact-SQL)
EVENTDATA (Transact-SQL)