CREATE SERVICE (Transact-SQL)CREATE SERVICE (Transact-SQL)

Gilt für: JaSQL Server JaAzure SQL-Datenbank (nur verwaltete Instanz) NeinAzure Synapse Analytics (SQL DW) NeinParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Erstellt einen neuen Dienst.Creates a new service. Bei einem Service BrokerService Broker-Dienst handelt es sich um einen Namen für einen bestimmten Task oder eine Gruppe von Tasks.A Service BrokerService Broker service is a name for a specific task or set of tasks. Service BrokerService Broker verwendet den Namen des Diensts zum Weiterleiten von Nachrichten, zum Übermitteln von Nachrichten an die richtige Warteschlange innerhalb einer Datenbank und zum Erzwingen des Vertrags für eine Konversation.uses the name of the service to route messages, deliver messages to the correct queue within a database, and enforce the contract for a conversation.

Symbol für Themenlink Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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

ArgumenteArguments

service_nameservice_name
Der Name des zu erstellenden Diensts.Is the name of the service to create. Ein neuer Dienst wird in der aktuellen Datenbank erstellt. Der Besitzer dieses neuen Diensts ist der in der AUTHORIZATION-Klausel angegebene Prinzipal.A new service is created in the current database and owned by the principal specified in the AUTHORIZATION clause. Server-, Datenbank- und Schemaname können nicht angegeben werden.Server, database, and schema names cannot be specified. Bei service_name muss es sich um einen gültigen sysname-Wert handeln.The service_name must be a valid sysname.

Hinweis

Erstellen Sie keinen Dienst, der das Schlüsselwort ANY für service_name verwendet.Do not create a service that uses the keyword ANY for the service_name. Wenn Sie ANY für einen Dienstnamen in CREATE BROKER PRIORITY festlegen, wird die Priorität für alle Dienste berücksichtigt.When you specify ANY for a service name in CREATE BROKER PRIORITY, the priority is considered for all services. ANY steht nicht für einen Dienst mit dem Namen ANY.It is not limited to a service whose name is ANY.

AUTHORIZATION owner_nameAUTHORIZATION owner_name
Legt den Besitzer des Diensts auf den angegebenen Datenbankbenutzer bzw. die angegebene Rolle fest.Sets the owner of the service to the specified database user or role. Ist der aktuelle Benutzer dbo oder sa, kann owner_name der Name eines beliebigen gültigen Benutzers bzw. einer beliebigen gültigen Rolle sein.When the current user is dbo or sa, owner_name may be the name of any valid user or role. Andernfalls muss owner_name der Name des aktuellen Benutzers, der Name eines Benutzers, für den der aktuelle Benutzer IMPERSONATE-Berechtigungen besitzt, oder der Name einer Rolle sein, der der aktuelle Benutzer angehört.Otherwise, owner_name must be the name of the current user, the name of a user that the current user has IMPERSONATE permission for, or the name of a role to which the current user belongs.

ON QUEUE [ schema_name .ON QUEUE [ schema_name. ] queue_name] queue_name
Gibt den Namen der Warteschlange an, die Nachrichten für den Dienst empfängt.Specifies the queue that receives messages for the service. Die Warteschlange muss in der gleichen Datenbank vorhanden sein wie der Dienst.The queue must exist in the same database as the service. Wird schema_name nicht bereitgestellt, handelt es sich bei dem Schema um das Standardschema für den Benutzer, der die Anweisung ausführt.If no schema_name is provided, the schema is the default schema for the user that executes the statement.

contract_namecontract_name
Gibt einen Vertrag an, der diesen Dienst zum Ziel haben kann.Specifies a contract for which this service may be a target. Dienstprogramme initiieren Konversationen mit diesem Dienst mithilfe der angegebenen Verträge.Service programs initiate conversations to this service using the contracts specified. Werden keine Verträge angegeben, kann der Dienst nur Konversationen initiieren.If no contracts are specified, the service may only initiate conversations.

[ DEFAULT ][ DEFAULT ]
Gibt an, dass der Dienst das Ziel von Konversationen sein kann, die dem DEFAULT-Vertrag entsprechen.Specifies that the service may be a target for conversations that follow the DEFAULT contract. Im Kontext dieser Klausel ist DEFAULT kein Schlüsselwort und muss als Bezeichner begrenzt sein.In the context of this clause, DEFAULT is not a keyword, and must be delimited as an identifier. Der DEFAULT-Vertrag ermöglicht es beiden Seiten der Konversation, Nachrichten vom Nachrichtentyp DEFAULT zu senden.The DEFAULT contract allows both sides of the conversation to send messages of message type DEFAULT. Der Nachrichtentyp DEFAULT verwendet für die Überprüfung NONE.Message type DEFAULT uses validation NONE.

BemerkungenRemarks

Ein Dienst macht die Funktionalität verfügbar, die von den Verträgen bereitgestellt wird, denen er zugeordnet ist, sodass sie von anderen Diensten verwendet werden können.A service exposes the functionality provided by the contracts with which it is associated, so that they can be used by other services. Die CREATE SERVICE-Anweisung gibt die Verträge an, deren Ziel dieser Dienst ist.The CREATE SERVICE statement specifies the contracts that this service is the target for. Ein Dienst kann nur ein Ziel für Konversationen sein, die die von dem Dienst angegebenen Verträge verwenden.A service can only be a target for conversations that use the contracts specified by the service. Ein Dienst, der keine Verträge angibt, macht keine Funktionalität für andere Dienste verfügbar.A service that specifies no contracts exposes no functionality to other services.

Konversationen, die von diesem Dienst initiiert werden, können einen beliebigen Vertrag verwenden.Conversations initiated from this service may use any contract. Sie erstellen einen Dienst ohne Angabe von Verträgen, wenn der Dienst nur Konversationen initiiert.You create a service without specifying contracts when the service only initiates conversations.

Wenn Service BrokerService Broker eine neue Konversation von einem Remotedienst annimmt, bestimmt der Name des Zieldiensts die Warteschlange, in der der Broker Nachrichten in der Konversation anordnet.When Service BrokerService Broker accepts a new conversation from a remote service, the name of the target service determines the queue where the broker places messages in the conversation.

BerechtigungenPermissions

Die Berechtigung zum Erstellen eines Diensts liegt standardmäßig bei Mitgliedern der festen Datenbankrollen db_ddladmin oder db_owner bzw. der festen Serverrolle sysadmin.Permission for creating a service defaults to members of the db_ddladmin or db_owner fixed database roles, or the sysadmin fixed server role. Der Benutzer, der die CREATE SERVICE-Anweisung ausführt, muss über die REFERENCES-Berechtigung für die Warteschlange und alle angegebenen Verträge verfügen.The user executing the CREATE SERVICE statement must have REFERENCES permission on the queue and all contracts specified.

Standardmäßig verfügen der Besitzer des Diensts, Mitglieder der festen Datenbankrollen REFERENCES oder db_ddladmin bzw. Mitglieder der festen Serverrolle db_owner über die sysadmin-Berechtigung für einen Dienst.REFERENCES permission for a service defaults to the owner of the service, members of the db_ddladmin or db_owner fixed database roles, or members of the sysadmin fixed server role. SEND-Berechtigungen für einen Dienst liegen standardmäßig beim Besitzer des Diensts, bei Mitgliedern der festen Datenbankrolle db_owner oder bei Mitgliedern der festen Serverrolle sysadmin.SEND permissions for a service default to the owner of the service, members of the db_owner fixed database role, or members of the sysadmin fixed server role.

Ein Dienst kann kein temporäres Objekt sein.A service may not be a temporary object. Dienstnamen, die mit # beginnen, sind zulässig. Hierbei handelt es sich jedoch um dauerhafte Objekte.Service names beginning with # are allowed, but are permanent objects.

BeispieleExamples

A.A. Erstellen eines Diensts mit einem VertragCreating a service with one contract

Im folgenden Beispiel wird der Dienst //Adventure-Works.com/Expenses in der ExpenseQueue-Warteschlange im dbo-Schema erstellt.The following example creates the service //Adventure-Works.com/Expenses on the ExpenseQueue queue in the dbo schema. Dialoge, die diesen Dienst zum Ziel haben, müssen dem Vertrag //Adventure-Works.com/Expenses/ExpenseSubmission entsprechen.Dialogs that target this service must follow the contract //Adventure-Works.com/Expenses/ExpenseSubmission.

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

B.B. Erstellen eines Diensts mit mehreren VerträgenCreating a service with multiple contracts

Im folgenden Beispiel wird der Dienst //Adventure-Works.com/Expenses für die ExpenseQueue-Warteschlange erstellt.The following example creates the service //Adventure-Works.com/Expenses on the ExpenseQueue queue. Dialoge, die diesen Dienst zum Ziel haben, müssen entweder dem Vertrag //Adventure-Works.com/Expenses/ExpenseSubmission oder dem Vertrag //Adventure-Works.com/Expenses/ExpenseProcessing entsprechen.Dialogs that target this service must either follow the contract //Adventure-Works.com/Expenses/ExpenseSubmission or the contract //Adventure-Works.com/Expenses/ExpenseProcessing.

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

C.C. Erstellen eines Diensts ohne VerträgeCreating a service with no contracts

Im folgenden Beispiel wird die Dienstwarteschlange //Adventure-Works.com/Expenses on the ExpenseQueue erstellt.The following example creates the service //Adventure-Works.com/Expenses on the ExpenseQueue queue. Dieser Dienst verfügt über keine Vertragsinformationen.This service has no contract information. Daher kann der Dienst nur der Initiator eines Dialogs sein.Therefore, the service can only be the initiator of a dialog.

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

Weitere InformationenSee Also

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