- Представления каталога сообщений (для ошибок) — sys.messages Messages (for errors) Catalog Views — sys.messages
- Разрешения Permissions
- CREATE MESSAGE TYPE (Transact-SQL) CREATE MESSAGE TYPE (Transact-SQL)
- Синтаксис Syntax
- Аргументы Arguments
- Remarks Remarks
- Разрешения Permissions
- Примеры Examples
- A. A. Создание типа сообщений, содержащего XML-документ правильного формата Creating a message type containing well-formed XML
- Б. B. Создание типа сообщений, содержащего типовой XML Creating a message type containing typed XML
- В. C. Создание типа сообщений для пустого сообщения Creating a message type for an empty message
- Г. D. Создание типа сообщений, содержащего двоичные данные Creating a message type containing binary data
- Использование сообщений Using Messages
- Примеры Examples
- Обнаружение определенного системного сообщения на языке Visual Basic Finding a Particular System Message in Visual Basic
- Обнаружение определенного системного сообщения на языке Visual C# Finding a Particular System Message in Visual C#
- Обнаружение определенного системного сообщения в PowerShell Finding a Particular System Message in PowerShell
- Добавление нового определяемого пользователем сообщения на языке Visual Basic Adding a New User-Defined Message in Visual Basic
- Добавление нового определяемого пользователем сообщения на языке Visual C# Adding a New User-Defined Message in Visual C#
- Добавление нового, определяемого пользователем сообщения в PowerShell Adding a New User-Defined Message in PowerShell
Представления каталога сообщений (для ошибок) — sys.messages Messages (for errors) Catalog Views — sys.messages
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions)
Содержит по одной строке для каждого message_id или language_id сообщений об ошибках в системе, как для определяемых системой, так и для определяемых пользователем сообщений. Contains a row for each message_id or language_id of the error messages in the system, for both system-defined and user-defined messages. Дополнительные сведения см. в разделе sp_addmessage (Transact-SQL). For more information, see sp_addmessage (Transact-SQL).
Имя столбца Column name | Тип данных Data type | Описание Description |
---|---|---|
message_id message_id | int int | Идентификатор сообщения. ID of the message. Уникален в пределах сервера. Is unique across server. Сообщения с идентификаторами, меньшими 50000, являются системными. Message IDs less than 50000 are system messages. |
language_id language_id | smallint smallint | Идентификатор языка, для которого используется текст в тексте , как определено в таблице syslanguages. Language ID for which the text in text is used, as defined in syslanguages. Это значение уникально для указанного message_id. This is unique for a specified message_id. |
severity severity | tinyint tinyint | Степень серьезности сообщения, от 1 до 25. Severity level of the message, between 1 and 25. Это одинаково для всех языков сообщений в message_id. This is the same for all message languages within a message_id. |
is_event_logged is_event_logged | bit bit | 1 = сообщение заносится в журнал событий при возникновении ошибки. 1 = Message is event-logged when an error is raised. Это одинаково для всех языков сообщений в message_id. This is the same for all message languages within a message_id. |
text text | nvarchar (2048) nvarchar(2048) | Текст сообщения, используемого при активном соответствующем language_id . Text of the message used when the corresponding language_id is active. |
Разрешения Permissions
Необходимо быть членом роли public. Requires membership in the public role. Дополнительные сведения см. в разделе Metadata Visibility Configuration. For more information, see Metadata Visibility Configuration.
CREATE MESSAGE TYPE (Transact-SQL) CREATE MESSAGE TYPE (Transact-SQL)
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Управляемый экземпляр SQL Azure Azure SQL Managed Instance Управляемый экземпляр SQL Azure Azure SQL Managed Instance Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) Управляемый экземпляр SQL Azure Azure SQL Managed Instance Управляемый экземпляр SQL Azure Azure SQL Managed Instance
Создает новый тип сообщений. Creates a new message type. Тип сообщений определяет имя сообщения и проверку, выполняемую компонентом Компонент Service Broker Service Broker для сообщений с этим именем. A message type defines the name of a message and the validation that Компонент Service Broker Service Broker performs on messages that have that name. Обе стороны диалога должны определить одинаковые типы сообщений. Both sides of a conversation must define the same message types.
Синтаксические обозначения в Transact-SQL
Transact-SQL Syntax Conventions
Синтаксис Syntax
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям. To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.
Аргументы Arguments
message_type_name message_type_name
Имя создаваемого типа сообщений. Is the name of the message type to create. Создается новый тип сообщений в текущей базе данных, которой владеет участник, указанный в предложении AUTHORIZATION. A new message type is created in the current database and owned by the principal specified in the AUTHORIZATION clause. Не могут быть указаны имена сервера, базы данных и схемы. Server, database, and schema names cannot be specified. Имя Message_type_name может содержать не более 128 символов. The message_type_name can be up to 128 characters.
AUTHORIZATION owner_name AUTHORIZATION owner_name
Устанавливает указанного пользователя или роль базы данных в качестве владельца типа сообщений. Sets the owner of the message type to the specified database user or role. Если текущим пользователем является dbo или sa, то аргумент owner_name может быть именем любого допустимого пользователя или роли. When the current user is dbo or sa, owner_name can be the name of any valid user or role. В противном случае аргумент owner_name должен быть именем текущего пользователя, именем пользователя, для которого у текущего пользователя есть разрешение IMPERSONATE, или именем роли, которой принадлежит текущий пользователь. Otherwise, owner_name must be the name of the current user, the name of a user who the current user has IMPERSONATE permission for, or the name of a role to which the current user belongs. Если это предложение опущено, тип сообщений будет принадлежать текущему пользователю. When this clause is omitted, the message type belongs to the current user.
VALIDATION VALIDATION
Указывает, как компонент Компонент Service Broker Service Broker производит проверку текста сообщения этого типа. Specifies how Компонент Service Broker Service Broker validates the message body for messages of this type. Если это предложение не указано, то по умолчанию проверке присваивается значение NONE. When this clause is not specified, validation defaults to NONE.
None NONE
Указывает, что проверка не выполняется. Specifies that no validation is performed. Текст сообщения может содержать любые данные или иметь значение NULL. The message body can contain data, or it can be NULL.
EMPTY EMPTY
Указывает, что текст сообщения должен быть NULL. Specifies that the message body must be NULL.
WELL_FORMED_XML WELL_FORMED_XML
Указывает, что текст сообщения должен содержать корректные XML-данные. Specifies that the message body must contain well-formed XML.
VALID_XML WITH SCHEMA COLLECTION schema_collection_name VALID_XML WITH SCHEMA COLLECTION schema_collection_name
Указывает, что текст сообщения должен содержать XML-данные, которые соответствуют схеме в указанной коллекции схем. Аргумент schema_collection_name должен быть именем существующей коллекции XML-схем. Specifies that the message body must contain XML that complies with a schema in the specified schema collection The schema_collection_name must be the name of an existing XML schema collection.
Remarks Remarks
Компонент Компонент Service Broker Service Broker проверяет входящие сообщения. Компонент Service Broker Service Broker validates incoming messages. Если сообщение содержит текст, который не соответствует указанному типу проверки, компонент Компонент Service Broker Service Broker удаляет неправильное сообщение и возвращает службе, которая его отправила, сообщение об ошибке. When a message contains a message body that does not comply with the validation type specified, Компонент Service Broker Service Broker discards the invalid message and returns an error message to the service that sent the message.
Обе стороны диалога должны задать одинаковые имена типа сообщений. Both sides of a conversation must define the same name for a message type. В целях оказания помощи при поиске и устранении неполадок, обе стороны диалога обычно указывают одинаковые проверки для типа сообщений, хотя компонент Компонент Service Broker Service Broker не требует использования обеими сторонами одинаковой проверки. To help troubleshooting, both sides of a conversation typically specify the same validation for the message type, although Компонент Service Broker Service Broker does not require that both sides of the conversation use the same validation.
Тип сообщений не может быть временным объектом. A message type can not be a temporary object. Имена типов сообщений могут начинаться с символа # , но они должны быть постоянными объектами. Message type names starting with # are allowed, but are permanent objects.
Разрешения Permissions
Разрешения на создание типа сообщений по умолчанию есть у предопределенных ролей базы данных db_ddladmin или db_owner и у предопределенной роли сервера sysadmin. Permission for creating a message type defaults to members of the db_ddladmin or db_owner fixed database roles and the sysadmin fixed server role.
По умолчанию разрешение на REFERENCES для типов сообщений принадлежит владельцу типа сообщений, членам предопределенной роли базы данных db_owner и членам предопределенной роли сервера sysadmin. REFERENCES permission for a message type defaults to the owner of the message type, members of the db_owner fixed database role, and members of the sysadmin fixed server role.
Если инструкция CREATE MESSAGE TYPE задает коллекцию схемы, выполняющий инструкцию пользователь должен иметь разрешения REFERENCES для указанной коллекции схем. When the CREATE MESSAGE TYPE statement specifies a schema collection, the user executing the statement must have REFERENCES permission on the schema collection specified.
Примеры Examples
A. A. Создание типа сообщений, содержащего XML-документ правильного формата Creating a message type containing well-formed XML
Этот пример создает новый тип сообщений, который содержит корректный XML. The following example creates a new message type that contains well-formed XML.
Б. B. Создание типа сообщений, содержащего типовой XML Creating a message type containing typed XML
Этот пример создает тип сообщений для отчета о затратах, закодированного в XML. The following example creates a message type for an expense report encoded in XML. Пример создает коллекцию XML-схем, которая содержит схему для простого отчета о затратах. The example creates an XML schema collection that holds the schema for a simple expense report. Затем пример создает новый тип сообщений, который сверяет сообщения со схемой. The example then creates a new message type that validates messages against the schema.
В. C. Создание типа сообщений для пустого сообщения Creating a message type for an empty message
Этот пример создает новый тип сообщений с пустой кодировкой. The following example creates a new message type with empty encoding.
Г. D. Создание типа сообщений, содержащего двоичные данные Creating a message type containing binary data
Этот пример создает новый тип сообщений, который может содержать двоичные данные. The following example creates a new message type to hold binary data. Так как сообщение будет хранить данные, отличные от XML, в типе сообщений задается тип проверки NONE . Because the message will contain data that is not XML, the message type specifies a validation type of NONE . Обратите внимание, что в таком случае приложение, которое принимает сообщение этого типа, должно проверить, имеются ли в этом сообщении данные, и относятся ли эти данные к ожидаемому типу. Notice that, in this case, the application that receives a message of this type must verify that the message contains data, and that the data is of the type expected.
Использование сообщений Using Messages
Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) База данных SQL Azure Azure SQL Database База данных SQL Azure Azure SQL Database Управляемый экземпляр SQL Azure Azure SQL Managed Instance Управляемый экземпляр SQL Azure Azure SQL Managed Instance Azure Synapse Analytics Azure Synapse Analytics Azure Synapse Analytics Azure Synapse Analytics Применимо к: Applies to: SQL Server SQL Server (все поддерживаемые версии) SQL Server SQL Server (all supported versions) База данных SQL Azure Azure SQL Database База данных SQL Azure Azure SQL Database Управляемый экземпляр SQL Azure Azure SQL Managed Instance Управляемый экземпляр SQL Azure Azure SQL Managed Instance Azure Synapse Analytics Azure Synapse Analytics Azure Synapse Analytics Azure Synapse Analytics
В объектах SMO системные сообщения представлены SystemMessageCollection объектом, принадлежащим объекту сервера . In SMO, system messages are represented by the SystemMessageCollection object that belongs to the Server object. Так как системные сообщения нельзя изменить, свойства объекта SystemMessage доступны только для чтения. Because the system messages cannot be modified, SystemMessage object properties are read-only.
Определяемые пользователем сообщения представлены в SMO программно объектом UserDefinedMessageCollection. User-defined messages are represented programmatically in SMO by the UserDefinedMessageCollection object. Существующие определяемые пользователем сообщения могут быть обнаружены при проходе по коллекции. Existing user-defined messages can be discovered by iterating through the collection. Новые определяемые пользователем сообщения могут создаваться путем создания нового объекта UserDefinedMessage и установки соответствующих свойств. New user-defined messages can be created by instantiating a new UserDefinedMessage object and setting the appropriate properties.
Примеры Examples
В следующих примерах кода для создания приложения необходимо выбрать среду программирования, шаблон программирования и язык программирования. For the following code examples, you will have to select the programming environment, programming template and the programming language to create your application. Дополнительные сведения см. в статье Создание проекта Visual C# SMO в Visual Studio .NET. For more information, see Create a Visual C# SMO Project in Visual Studio .NET.
Обнаружение определенного системного сообщения на языке Visual Basic Finding a Particular System Message in Visual Basic
Пример кода показывает, как определить системное сообщение по идентификатору и отобразить его. The code example shows how to identify a system message by ID number and display the message.
Обнаружение определенного системного сообщения на языке Visual C# Finding a Particular System Message in Visual C#
Пример кода показывает, как определить системное сообщение по идентификатору и отобразить его. The code example shows how to identify a system message by ID number and display the message.
Обнаружение определенного системного сообщения в PowerShell Finding a Particular System Message in PowerShell
Пример кода показывает, как определить системное сообщение по идентификатору и отобразить его. The code example shows how to identify a system message by ID number and display the message.
Добавление нового определяемого пользователем сообщения на языке Visual Basic Adding a New User-Defined Message in Visual Basic
Пример кода демонстрирует, как создать определяемое пользователем сообщение с идентификатором больше 50 000. The code example demonstrates how to create a user-defined message with an ID greater than 50000.
Добавление нового определяемого пользователем сообщения на языке Visual C# Adding a New User-Defined Message in Visual C#
Пример кода демонстрирует, как создать определяемое пользователем сообщение с идентификатором больше 50 000. The code example demonstrates how to create a user-defined message with an ID greater than 50000.
Добавление нового, определяемого пользователем сообщения в PowerShell Adding a New User-Defined Message in PowerShell
Пример кода демонстрирует, как создать определяемое пользователем сообщение с идентификатором больше 50 000. The code example demonstrates how to create a user-defined message with an ID greater than 50000.