Las consultas pasadas a SQL Server se están corrompiendo

Las consultas pasadas a SQL Server se están corrompiendo

Estamos experimentando un error extraño con nuestra aplicación en el sitio de un cliente. Hemos logrado reducirlo hasta el punto en que podemos replicar el comportamiento usando solo Management Studio y SQL Server.

Disponemos de dos máquinas, A y B:

+--------------------+ +--------------------+
| [Un] | | [B] |
| Gestión | --------------> | Servidor SQL 2008 R2 |
| Estudio | | Empresa x64 |
+--------------------+ +--------------------+

Estamos ejecutando un script SQL en Management Studio en la máquina A en la instancia de SQL Server en la máquina B.En realidad, no estamos ejecutando el script, solo analizándolo.

La mayoría de las veces, la operación de análisis funciona bien. Ocasionalmente (aparentemente de forma aleatoria), la operación de análisis falla con un error de sintaxis. El mensaje de error muestra la parte del script con el error, que aparece como un SQL del script original que se ha truncado y tiene caracteres aleatorios añadidos.

Un ejemplo:

El SQL original:

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

El SQL que tiene un error (según lo informado por 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ā怊

El ejemplo anterior muestra cómo se está dañando la consulta. No siempre sucede y no siempre es el mismo fragmento de SQL el que causa el error. El análisis de este script con otra instancia de SQL Server no produce errores, lo que demuestra que el script está bien.

Élapareceque algo está corrompiendo el SQL que se recibe en el servidor. Esto me lleva a pensar que el problema radica en el extremo del cliente o en la transmisión del SQL del cliente al servidor. Tengo un seguimiento de SQL del período en el que se produce un error, que muestra que el SQL se ha dañado cuando SQL Server lo recibe.

No hemos podido localizar ninguna causa posible de este comportamiento y, por lo tanto, no podemos encontrar una solución. Debido a que los errores ocurren aparentemente de forma aleatoria, también es muy difícil generar pasos de reproducción para enviar un informe de error.

¿Algunas ideas?

Respuesta1

Saque SQL Server. Es hora de realizar una comprobación exhaustiva del sistema. La memoria (del ordenador pero posiblemente también de la tarjeta de red) podría ser la culpable. Esperaría ver aparecer errores de memoria.

información relacionada