Запросы, переданные на SQL Server, повреждаются

Запросы, переданные на SQL Server, повреждаются

Мы столкнулись со странной ошибкой в ​​нашем приложении на сайте клиента. Нам удалось сузить ее до точки, где мы можем воспроизвести поведение, используя только Management Studio и SQL Server.

У нас есть две машины, А и Б:

+-----------+ +--------------------+
| [А] | | [Б] |
| Управление | --------------> | SQL Server 2008 R2 |
| Студия | | Предприятие x64 |
+-----------+ +--------------------+

Мы запускаем скрипт SQL в Management Studio на машине A для экземпляра SQL Server на машине B.На самом деле мы не выполняем скрипт, а просто анализируем его.

В большинстве случаев операция синтаксического анализа работает нормально. Иногда (по-видимому, случайно) операция синтаксического анализа завершается с ошибкой синтаксиса. Сообщение об ошибке показывает часть скрипта с ошибкой, которая выглядит как некий SQL из исходного скрипта, который был усечен и к которому были добавлены случайные символы.

Пример:

Исходный SQL:

SELECT DISTINCT ST.TABLE_NAME as TableName
FROM INFORMATION_SCHEMA.TABLES AS ST
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS SC
ON SC.TABLE_NAME = ST.TABLE_NAME
WHERE ST.TABLE_TYPE = 'BASE TABLE'
AND SC.COLUMN_NAME = 'Identity'
AND ST.TABLE_NAME != 'dtproperties'
ORDER BY ST.TABLE_NAME

SQL-код, содержащий ошибку (согласно сообщению SQL Server):

SELECT DISTINCT ST.TABLE_NAME as TableName
FROM INFORMATION_SCHEMA.TABLES AS ST
INNER JOIN INFORMATION_SCHEMA.COLUMNS AS SC
ON SC.TABLE_NAME = Sā怊

В приведенном выше примере показано, как повреждается запрос. Это происходит не всегда, и не всегда это тот же фрагмент SQL, который вызывает ошибку. Анализ этого скрипта с другим экземпляром SQL Server не выдает ошибок, что показывает, что скрипт в порядке.

Этопоявляетсячто что-то повреждает SQL, который принимается сервером. Это заставляет меня думать, что проблема заключается либо в клиентской части, либо в передаче SQL от клиента к серверу. У меня есть трассировка SQL с того периода, когда произошла ошибка, которая показывает, что SQL был поврежден, когда SQL Server его получил.

Мы не смогли отследить возможную причину такого поведения, и поэтому не можем найти исправление. Поскольку ошибки возникают, по-видимому, случайным образом, также очень сложно сгенерировать шаги воспроизведения для отправки отчета об ошибке.

Есть идеи?

решение1

Вытащите SQL Server. Время для тщательной проверки системы. Память (компьютера, но, возможно, и сетевой карты) может быть виновником. Я бы ожидал увидеть появление ошибок памяти.

Связанный контент