Является ли SqlException.Number уникальным для исключений SQL Server?C#

Место общения программистов C#
Ответить
Anonymous
 Является ли SqlException.Number уникальным для исключений SQL Server?

Сообщение Anonymous »

В библиотеках Microsoft.Data.SqlClient/System.Data.SqlClient ошибки Sql, возвращаемые с SqlException, имеют свойство Number.
Во многих вопросах StackOverflow и других обсуждениях Интернет-пользователи предлагают использовать это свойство для выявления конкретных проблем, связанных с исключением (например, взаимоблокировка, дублирование ключей и т. д.).
Однако, согласно официальной документации Microsoft, это свойство может быть заполняется как из кода ошибки сервера (таблица master.dbo.sysmessages SQL Server), так и из кода ошибки Win32, а также может иметь некоторые другие числа (например, -2 для тайм-аута). Означает ли это, что одно и то же число может означать разные вещи в зависимости от того, откуда выдается исключение?
Примером этого является номер 10054.
  • Исходя из данных в Интернете, это выдается при возникновении проблемы с подключением - https://dba.stackexchange.com/questions ... ect-to-sql -server-on-ssms-and-got-error-10054
  • Исходя из того, что я вижу в таблице master.dbo.sysmessages SQL Server, номер 10054 соответствует «Значению данных для один или несколько столбцов превысили тип, используемый поставщиком.".
Другой пример: 233.
[*]Судя по данным в Интернете, это также выдается при возникновении проблем с подключением — соединение с SQL Server произвольно возвращает коды ошибок 233 или 18456.
[*]В зависимости от того, что Я вижу в таблице master.dbo.sysmessages SQL Server номер 233 соответствует «Столбец '%.*ls' в таблице '%.*ls' не может иметь значение NULL».

Итак, я хочу понять, почему все в Интернете предлагают использовать это число, чтобы предположить, что такое конкретное исключение SQL и насколько это безопасно, когда одно и то же число может означать разные вещи?

Подробнее здесь: https://stackoverflow.com/questions/790 ... exceptions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»