Примеры исключений:
Ошибка 1:
System.Data.SqlClient.SqlException:
Неверный синтаксис рядом с «0x1cf2». Неправильный синтаксис рядом с ключевым словом AS.
Неправильный синтаксис рядом с ключевым словом ORDER.
Ошибка 2:
System.Data.SqlClient.SqlException:
Неправильный входящий поток протокола потока табличных данных (TDS).
Параметр 2 (''): тип данных 0x00 неизвестен. .
Ошибка 3:
System.Data.SqlClient.SqlException:F鑎평........................椀氀琀攀爀㈀崀⸀嬀䤀猀琀䜀攀眀甀攀爀稀愀渀眀攀渀最匀琀攀氀氀瀀氀愀
... — недопустимое имя, поскольку оно содержит NULL-символ или недопустимый символ Юникода.
Примечание к ошибке 3: я не смог включить в вопрос весь текст этой конкретной ошибки, потому что StackOverflow пожаловался бы на возможную попытку рассылки спама, если бы я это сделал. Но самое главное, там много нежелательных неанглийских символов.
Окружающая среда и конфигурация:
- База данных: один экземпляр SQL Server 2019 с одной центральной базой данных. Регулярно поддерживается с помощью резервного копирования и обновлений индекса/статистики.
- ORM: Entity Framework 6.4.4 с использованием System.Data.SqlClient.
- Приложение: .NET Framework 4.8, MVC 5. Монолитный, устаревший
Обновления драйверов и библиотек: мы обновили Entity Framework до версии 6.5.1, и я изменил приложение на использование Microsoft.Data.SqlClient вместо System.Data.SqlClient .
Но это не помогло. Ошибки по-прежнему появляются случайным образом.
На данный момент я определил 24 места в нашей базе кода, где возникает ошибка. Но, похоже, у них нет ничего общего. Помимо того факта, что все они имеют доступ для чтения к базе данных; не пишет.
Я также подумал о текстовых переменных, которые используются для создания запросов. Но ни один из запросов не использует текст для фильтрации или упорядочивания результатов.
Я попытался воспроизвести их в контролируемой локальной среде. Но сделать это не удалось. Я пробовал это с локальной базой данных, но также пытался подключиться к нашей производственной базе данных. Мне так и не удалось воспроизвести ошибки.
Сейчас я в тупике. Я не знаю, где искать и что делать, чтобы воспроизвести ошибки и устранить их.
Мой вопрос:
- Какие возможные причины могут привести к подобным случайным исключениям SQL?
- Кто-нибудь сталкивался с подобными проблемами с SQL Server 2019 и EF 6.4.4/EF 6.5.1, и если да, не могли бы вы указать мне решение?
Я проверил, активирован ли MARS (MultipleActiveResultSets) в наших строках подключения. И это не так. С этим все должно быть в порядке.
Я также установил несколько небольших работающих приложений, которые считывают некоторые данные из базы данных через фиксированные интервалы времени, и делаю то же самое на некоторых наших клиентах. .
Как и было предложено, мы надеемся, что это приведет к выявлению машин, которые могут вызвать проблемы.
Иногда ошибки появляются снова через две недели. Так что я буду следить за этим и сообщу обновленную информацию, как только что-то произойдет.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -4-4-6-5-1