Die Auswahl weiterer Felder führt zu einem katastrophalen Ausfall

7

Ich habe eine Verbindung zu einem Verbindungsserver von SQL Server 2012 zu Pervasive SQL.

Wenn ich das mache select field1, field2, field3 from mytable, funktioniert alles!

Wenn ich dies jedoch tue select field1, field2, field3, field4, ...field10+ from mytable, erhalte ich folgende Fehlermeldung:

Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "KSLAP208" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "KSLAP208".

Ich habe mir die Protokolle angesehen und hier steht:

2013-02-08 11:27:30.93 spid55      ***Stack Dump being sent to D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\LOG\SQLDump0049.txt
2013-02-08 11:27:30.93 spid55      SqlDumpExceptionHandler: Process 55 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.
2013-02-08 11:27:30.93 spid55      * *******************************************************************************
2013-02-08 11:27:30.93 spid55      *
2013-02-08 11:27:30.93 spid55      * BEGIN STACK DUMP:
2013-02-08 11:27:30.93 spid55      *   02/08/13 11:27:30 spid 55
2013-02-08 11:27:30.93 spid55      *
2013-02-08 11:27:30.93 spid55      *
2013-02-08 11:27:30.93 spid55      *   Exception Address = 00000000018F5BBE Module(UNKNOWN+0000000000000000)
2013-02-08 11:27:30.93 spid55      *   Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION
2013-02-08 11:27:30.93 spid55      *   Access Violation occurred reading address 0000000009400090
2013-02-08 11:27:30.93 spid55      * Input Buffer 128 bytes -
2013-02-08 11:27:30.93 spid55      *             select * from [KSLAP208].[C003]..PA_Profile_BASE_1119

Ich kann genau das gleiche select *von einem anderen Server ohne Probleme tun !

Was passiert hier? Ist dies eine Art 2012-Fehler oder ein Speicherproblem?

l - '' '' '-' '' '' '' '' '' '' '
quelle
Was passiert, wenn Sie Feld1, Feld2, Feld3, Feld4, ... Feld10 + aus mytable aus einer anderen Tabelle auswählen? Sie sagten, select * funktioniert, aber ist alles, was Sie vom anderen Server aus tun, genau gleich und führt zu unterschiedlichen Ergebnissen?
Rottengeek
Amanda, danke für deinen Kommentar. Nein, ich kann nicht mehr als eine Anzahl von Spalten aus einer anderen Tabelle auswählen. select * funktioniert von einem anderen Server aus, und eine beliebige Anzahl von Feldern funktioniert von einem anderen Server, aber nicht von diesem
l - '' '' '-' - '' '' '' '' ' '' ''
lass mich klarstellen. Ich habe SQL 2005 und SQL 2012, beide verbinden sich mit diesem einen Server. das 2005 ist in der Lage, jede Auswahl zu
treffen
1
verwandte Frage . Haben Sie etwas im Ereignisprotokoll, das Ihnen helfen kann? Was ist mit irgendetwas in den Protokollen des Servers, auf dem sich Ihre Pervasive-Instanz befindet?
Swasheck
1
Haben Sie diese Stack-Dump-Datei überprüft? Das sollte Ihnen helfen, zu dem zu gelangen, was tatsächlich abgestürzt ist.
Marian

Antworten:

1

Sie verwenden also Microsoft OLE DB Provider für ODBC (MSDASQL), der vermutlich auf den ODBC-DSN für Ihre Pervasive-Datenquelle verweist. Da es sich bei dem Fehler um eine Zugriffsverletzung (Access Violation, AV) handelt, kann ich wetten, dass die AV aufgrund eines Fehlers im Pervasive ODBC-Treiber ausgelöst wird. Da Sie auch erwähnen, dass diese Abfrage von einem anderen Computer aus funktioniert, können Sie Folgendes überprüfen:

  1. ODBC-DSN-Konfiguration zwischen der "schlechten" Maschine und der "guten" Maschine?
  2. Die ODBC-Treiberversion für Pervasive - ist sie auf "guten" und "schlechten" Computern gleich?
Arvind Shyamsundar
quelle