Следите за тем, чтобы определенный код ошибки ссылался на что-то конкретное.
select * from master.dbo.sysmessages where description like '%timeout%'
Это даст вам:
Значение, указанное для тайм-аута не является действительным. Таймаут должен быть действительным целым числом от 0 до 2147483647. 1033
Тайм-аут произошел при ожидании защелки: класс '% ls', id% p, type% d, Задача 0x% p:% d, waittime% d секунд, флаги 0x% I64x, владеющая заданием 0x% p. Продолжая ждать. 1033
Коммуникации с экземпляром удаленного сервера «%. * Ls» не были выполнены до истечения таймаута. Возможно, команда ALTER DATABASE не выполнена. Повторите команду. 1033
Значение времени ожидания зеркального отображения базы данных% d превышает максимальное значение 32767. 1033 Запись в кэш метаданных% d:% d в идентификаторе базы данных (% d) не проверяется на согласованность из-за таймаута блокировки. 1033
Отмеченная сделка «%. * Ls» не удалась. Тайм-аут произошел при попытке поместить отметку в журнал, совершив отмеченную транзакцию. Это может быть вызвано конфликтом с транзакциями Microsoft Distributed Transaction Coordinator (MS DTC) или другими 1033
Операция «Массовая вставка» для SQL Server Destination имеет время ожидания. Пожалуйста, подумайте об увеличении значения свойства Timeout в целевом сервере SQL Server в потоке данных. 1033
... и многие другие ошибки на всех языках.
Таким образом, вы можете предположить, что «1033 означает таймаут». К сожалению, это не так:
select description from master.dbo.sysmessages where msglangid=1033
Предупреждение: Фатальная ошибка% d произошло в% S_DATE. Обратите внимание на ошибку и время, а также обратитесь к системному администратору.
Запрос не допускается в Waitfor.
Неверный синтаксис около '%. * Ls'.
% S_MSG, которое начинается с '%. * Ls', слишком длинное. Максимальная длина равна% d. Элементы ORDER BY должны отображаться в списке выбора, если оператор содержит оператор UNION, INTERSECT или EXCEPT.
Номер позиции ORDER BY% ld находится вне допустимого диапазона количества элементов в списке выбора.
и многие другие ошибки, не связанные с таймаутом.
Так я придерживаюсь:
IsSqlTimeout = ((ex as SqlException).Message.ToUpper().Contains("TIMEOUT");
Так на самом деле ответить на ваш вопрос - это зависит от того, что ваш пользователь на самом деле способен понять или должно быть сказано о.
Я предлагаю вам регистрировать все ошибки за определенный период времени, группировать их, чтобы увидеть, какие из них наиболее распространены и обрабатывать каждый по одному.