У меня есть сценарий в одной из моих конфигураций диалога Service Broker, который выглядит следующим образом:
- один тип сообщения, который отправляется только инициатором (VALIDATION = WELL_FORMED_XML, без XSD)
- один контракт с этим типом сообщения
- оба развернуты на стороне инициатора и цели (удаленные машины)
Иногда я нахожу сообщения об ошибках системы Service Broker в целевой очереди, например:
<Error xmlns="http://schemas.microsoft.com/SQL/ServiceBroker/Error"><Code>-9616</Code><Description>A message of type 'here_is_the_name' was received and failed XML validation. XML parsing: line 1, character 547, illegal xml character This occurred in the message with Conversation ID 'here_is_the_guid', Initiator: 1, and Message sequence number: 0.</Description</Error>
Я просмотрел запись в блоге Ремуса Русану, и он утверждает, что:
Эта системная ошибка отправляется в диалог, который отправил тип сообщения, помеченный как соответствующий определенной схеме XML, но полезная нагрузка не смогла пройти проверку XML для указанной схемы.
В моем случае нет задействованной схемы XML, и я пытался воспроизвести этот случай в моем окружении разработки, используя те же версии SQL Server, и мне не удалось это сделать.
Я хотел бы знать, возможно ли получить это сообщение об ошибке системы, хотя я не использую схему XSD? Если да, то когда это может произойти, каков сценарий, при котором компонент Service Broker генерирует ошибку, как указано выше?
В сообщении четко написано: «Разбор XML: строка 1, символ 547, недопустимый символ xml», поэтому, на мой взгляд, это не имеет ничего общего с проверкой схемы. Может ли быть, что на транспортном уровне возникают некоторые проблемы (ошибки TCP), и поэтому Service Broker генерирует это сообщение об ошибке?