Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Cria um novo tipo de mensagem. Um tipo de mensagem define o nome de uma mensagem e a validação que o Service Broker realiza em mensagens que tenham esse nome. Ambos os lados de uma conversa devem definir os mesmos tipos de mensagens.
Transact-SQL convenções de sintaxe
Sintaxe
CREATE MESSAGE TYPE message_type_name
[ AUTHORIZATION owner_name ]
[ VALIDATION = { NONE
| EMPTY
| WELL_FORMED_XML
| VALID_XML WITH SCHEMA COLLECTION schema_collection_name
} ]
[ ; ]
Arguments
message_type_name
É o nome do tipo de mensagem a criar. Um novo tipo de mensagem é criado na base de dados atual e pertence ao principal especificado na AUTHORIZATION cláusula. Nomes de servidores, bases de dados e esquemas não podem ser especificados. A message_type_name pode ter até 128 caracteres.
AUTHORIZATION
owner_name
Define o proprietário do tipo de mensagem para o utilizador ou papel especificado na base de dados. Quando o utilizador atual é dbo ou sa, owner_name pode ser o nome de qualquer utilizador ou função válida. Caso contrário, owner_name deve ser o nome do utilizador atual, o nome de um utilizador para quem o utilizador atual tem permissão de PERSONIFICAÇÃO, ou o nome de uma função a que o utilizador atual pertence. Quando esta cláusula é omitida, o tipo de mensagem pertence ao utilizador atual.
VALIDAÇÃO
Especifica como o Service Broker valida o corpo da mensagem para mensagens deste tipo. Quando esta cláusula não é especificada, a validação passa por defeito a NENHUMA.
NONE
Especifica que não é realizada qualquer validação. O corpo da mensagem pode conter dados, ou pode ser NULL.
EMPTY
Especifica que o corpo da mensagem deve ser NULL.
WELL_FORMED_XML
Especifica que o corpo da mensagem deve conter XML bem formado.
VALID_XML COM SCHEMACOBRANÇA schema_collection_name
Especifica que o corpo da mensagem deve conter XML que cumpra um esquema na coleção de esquemas especificada. O schema_collection_name deve ser o nome de uma coleção de esquemas XML existente.
Remarks
O Service Broker valida mensagens recebidas. Quando uma mensagem contém o corpo da mensagem que não cumpre o tipo de validação especificado, o Service Broker descarta a mensagem inválida e devolve uma mensagem de erro ao serviço que enviou a mensagem.
Ambos os lados de uma conversa devem definir o mesmo nome para o tipo de mensagem. Para ajudar na resolução de problemas, ambos os lados de uma conversa normalmente especificam a mesma validação para o tipo de mensagem, embora o Service Broker não exija que ambos os lados da conversa usem a mesma validação.
Um tipo de mensagem não pode ser um objeto temporário. Nomes de tipos de mensagens que começam por # são permitidos, mas são objetos permanentes.
Permissions
A permissão para criar um tipo de mensagem passa por defeito aos membros do db_ddladmin ou db_owner papéis fixos de base de dados e ao sysadmin função fixa de servidor.
A permissão REFERENCES para um tipo de mensagem corresponde por defeito ao proprietário do tipo de mensagem, aos membros do db_owner papel fixo na base de dados e aos membros do papel de servidor fixo sysadmin .
Quando a CREATE MESSAGE TYPE instrução especifica uma coleção de esquemas, o utilizador que executa a instrução deve ter permissão REFERENCES sobre a coleção de esquemas especificada.
Examples
A. Criação de um tipo de mensagem contendo XML bem formado
O exemplo seguinte cria um novo tipo de mensagem que contém XML bem formado.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = WELL_FORMED_XML ;
B. Criação de um tipo de mensagem contendo XML tipado
O exemplo seguinte cria um tipo de mensagem para um relatório de despesas codificado em XML. O exemplo cria uma coleção de esquemas XML que armazena o esquema para um simples relatório de despesas. O exemplo cria então um novo tipo de mensagem que valida mensagens contra o esquema.
CREATE XML SCHEMA COLLECTION ExpenseReportSchema AS
N'<?xml version="1.0" encoding="UTF-16" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://Adventure-Works.com/schemas/expenseReport"
xmlns:expense="https://Adventure-Works.com/schemas/expenseReport"
elementFormDefault="qualified"
>
<xsd:complexType name="expenseReportType">
<xsd:sequence>
<xsd:element name="EmployeeName" type="xsd:string"/>
<xsd:element name="EmployeeID" type="xsd:string"/>
<xsd:element name="ItemDetail"
type="expense:ItemDetailType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemDetailType">
<xsd:sequence>
<xsd:element name="Date" type="xsd:date"/>
<xsd:element name="CostCenter" type="xsd:string"/>
<xsd:element name="Total" type="xsd:decimal"/>
<xsd:element name="Currency" type="xsd:string"/>
<xsd:element name="Description" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="ExpenseReport" type="expense:expenseReportType"/>
</xsd:schema>' ;
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = VALID_XML WITH SCHEMA COLLECTION ExpenseReportSchema ;
C. Criação de um tipo de mensagem para uma mensagem vazia
O exemplo seguinte cria um novo tipo de mensagem com codificação vazia.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/SubmitExpense]
VALIDATION = EMPTY ;
D. Criação de um tipo de mensagem contendo dados binários
O exemplo seguinte cria um novo tipo de mensagem para armazenar dados binários. Como a mensagem conterá dados que não são XML, o tipo de mensagem especifica um tipo de validação de NONE. Note que, neste caso, a aplicação que recebe uma mensagem deste tipo deve verificar que a mensagem contém dados e que os dados são do tipo esperado.
CREATE MESSAGE TYPE
[//Adventure-Works.com/Expenses/ReceiptImage]
VALIDATION = NONE ;
Ver também
ALTER MESSAGE TYPE (Transact-SQL)
DROP MESSAGE TYPE (Transact-SQL)
EVENTDATA (Transact-SQL)