As consultas passadas para o SQL Server estão sendo corrompidas

As consultas passadas para o SQL Server estão sendo corrompidas

Estamos enfrentando um erro bizarro com nosso aplicativo nas instalações de um cliente. Conseguimos restringi-lo ao ponto em que podemos replicar o comportamento usando apenas o Management Studio e o SQL Server.

Temos duas máquinas, A e B:

+------------+ +---------+
| [A] | | [B] |
| Gestão | --------------> | Servidor SQL 2008 R2 |
| Estúdio | | Empresa x64 |
+------------+ +---------+

Estamos executando um script SQL no Management Studio na máquina A na instância do SQL Server na máquina B.Na verdade, não estamos executando o script, apenas analisando-o.

Na maioria das vezes, a operação de análise funciona bem. Ocasionalmente (aparentemente aleatoriamente), a operação de análise falha com um erro de sintaxe. A mensagem de erro mostra a parte do script com o erro, que aparece como algum SQL do script original que foi truncado e possui caracteres aleatórios anexados a ele.

Um exemplo:

O 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

O SQL que está com erro (conforme relatado pelo 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ā怊

O exemplo acima mostra como a consulta está sendo corrompida. Isso nem sempre acontece e nem sempre é o mesmo bit de SQL que causa o erro. A análise desse script em outra instância do SQL Server não produz erros, mostrando que o script está correto.

Istopareceque algo está corrompendo o SQL que está sendo recebido no servidor. Isso me leva a pensar que o problema está no lado do cliente ou na transmissão do SQL do cliente para o servidor. Eu tenho um rastreamento SQL do período em que ocorreu um erro, que mostra que o SQL foi corrompido quando o SQL Server o recebeu.

Não conseguimos rastrear qualquer causa possível para esse comportamento e, portanto, não conseguimos encontrar uma solução. Como os erros ocorrem aparentemente aleatoriamente, também é muito difícil gerar etapas de reprodução para enviar um relatório de bug.

Alguma ideia?

Responder1

Retire o SQL Server. É hora de uma verificação completa do sistema. A memória (do computador, mas possivelmente também da placa de rede) pode ser a culpada. Eu esperaria ver erros de memória aparecendo.

informação relacionada