2009-06-03 9 views
5

Ich habe eine DBF-Datei auf einer Netzwerkfreigabe, die ich in eine SQL Server-Tabelle auswählen möchte.SQL Server-Verbindungsserver-Abfrage, die nicht genügend Arbeitsspeicher ausgeführt wird

Diese Abfrage:

SELECT * FROM OPENQUERY(MyLinkedServer, 'SELECT * FROM DP') 

... wirft diesen Fehler:

OLE DB-Provider "MSDASQL" für den Verbindungsserver "MyLinkedServer" zurückgegeben Meldung „[Microsoft] [ODBC Visual FoxPro-Treiber] Nicht genug Speicherplatz für die Dateizuordnung. ".
Msg 7399, Ebene 16, Status 1, Zeile 11 Der OLE DB-Provider "MSDASQL" für den Verbindungsserver "MyLinkedServer" meldete einen Fehler. Der Provider hat keinen Speicher mehr.
Msg 7320, Ebene 16, Status 2, Zeile 11 Die Abfrage "SELECT * FROM DP" kann nicht für OLE DB-Provider "MSDASQL" für den Verbindungsserver "MyLinkedServer" ausgeführt werden.

Ich habe gelesen über die Verwendung von SYS (3050) FoxPro Speicher freigeben. Ich kann jedoch nicht herausfinden, wie man das gegen den Verbindungsserver ausführt.

Antwort

4

Bei verknüpften Serverabfragen wird Speicher aus einem Bereich außerhalb des SQL Server-Pufferpools mit dem Namen memToLeave verwendet, der für die Wartung von Verbindungsthreads und jetzt für sql clr unter anderem verwendet wird. Auf 32-Bit ist es 384 MB groß, was für einige Szenarien nicht ausreichen kann.

Wenn Sie Ihren SQL Server-Speicher-Konfiguration und insbesondere die MemToLeave Bereich anpassen müssen finden Sie eine Erklärung auf den folgenden Blog finden:

SQL Server Memory Configuration, Determining memToLeave Settings

+1

FYI - Alte Verknüpfung funktioniert nicht mehr, neue hinzugefügt. – Mansfield

+0

Das war vor einer Weile. Würdest du sagen, dass dieser Rat immer noch relevant ist, John? Von vielen Foren scheint es ein wiederkehrendes Problem zu sein und sieht immer noch wie ein Speicherleck aus. Momentan ist das Standard MemToLeave für die ersten paar Monate der Nutzung in Ordnung und dann hat plötzlich keiner der mit Access verbundenen Server mehr Speicher übrig. Sicherlich gibt es eine Möglichkeit, nur den Pool-Speicher und die davon abhängigen Prozesse neu zu initialisieren. – Adamantish

+0

Welches Betriebssystem verwenden Sie? Ist es 64bit? Welche Version von SQL Server verwenden Sie usw.? –