An SQL Server übergebene Abfragen werden beschädigt

An SQL Server übergebene Abfragen werden beschädigt

Wir haben einen seltsamen Fehler mit unserer Anwendung bei einem Kunden. Wir konnten ihn so weit eingrenzen, dass wir das Verhalten nur mit Management Studio und SQL Server reproduzieren können.

Wir haben zwei Maschinen, A und B:

+------------+ +--------------------+
| [EIN] | | [B] |
| Verwaltung | --------------> | SQL Server 2008 R2 |
| Studio | | Enterprise x64 |
+------------+ +--------------------+

Wir führen ein SQL-Skript im Management Studio auf Computer A für die SQL Server-Instanz auf Computer B aus.Wir führen das Skript nicht wirklich aus, sondern analysieren es nur.

Meistens funktioniert der Analysevorgang einwandfrei. Gelegentlich (scheinbar zufällig) schlägt der Analysevorgang mit einem Syntaxfehler fehl. Die Fehlermeldung zeigt den Teil des Skripts mit dem Fehler an. Dabei handelt es sich anscheinend um SQL aus dem Originalskript, das abgeschnitten und mit zufälligen Zeichen versehen wurde.

Ein Beispiel:

Das ursprüngliche 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

Das fehlerhafte SQL (wie vom SQL Server gemeldet):

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ā怊

Das obige Beispiel zeigt, wie die Abfrage beschädigt wird. Dies passiert nicht immer und es ist nicht immer derselbe SQL-Teil, der den Fehler verursacht. Das Parsen dieses Skripts mit einer anderen SQL Server-Instanz erzeugt keine Fehler, was zeigt, dass das Skript in Ordnung ist.

Eserscheintdass etwas das SQL beschädigt, das vom Server empfangen wird. Dies lässt mich vermuten, dass das Problem entweder auf der Clientseite oder bei der Übertragung des SQL vom Client zum Server liegt. Ich habe eine SQL-Ablaufverfolgung aus dem Zeitraum, in dem ein Fehler auftritt, die zeigt, dass das SQL beschädigt war, als SQL Server es empfing.

Wir konnten keine mögliche Ursache für dieses Verhalten finden und können daher auch keine Lösung finden. Da die Fehler scheinbar zufällig auftreten, ist es auch sehr schwierig, Schritte zur Reproduktion zu generieren, um einen Fehlerbericht einzureichen.

Irgendwelche Ideen?

Antwort1

SQL Server rausholen. Zeit für eine gründliche Systemprüfung. Der Speicher (des Computers, aber möglicherweise auch der Netzwerkkarte) könnte der Übeltäter sein. Ich würde erwarten, dass Speicherfehler auftreten.

verwandte Informationen