2009-06-03 13 views
5

Mam plik DBF w udziale sieciowym, który próbuję wybrać w tabeli programu SQL Server.Zapytanie serwera SQL Server o wyczerpaniu pamięci

To zapytanie:

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

... wyrzuca błąd:

OLE DB provider "MSDASQL" dla serwera połączonego "MyLinkedServer" zwrócony komunikat „[Microsoft] [ODBC Visual FoxPro Driver] Nie wystarczająca pamięć na mapę plików. ".
Msg 7399, poziom 16, Stan 1, wiersz 11 Dostawca OLE DB "MSDASQL" dla serwera połączonego "MyLinkedServer" zgłosił błąd. Dostawcy zabrakło pamięci.
Msg 7320, poziom 16, Stan 2, wiersz 11 Nie można wykonać kwerendy "SELECT * FROM DP" przeciwko dostawcy OLE DB "MSDASQL" dla serwera połączonego "MyLinkedServer".

Czytałem o użyciu SYS (3050), aby zwolnić pamięć FoxPro. Nie wiem, jak to zrobić na połączonym serwerze.

Odpowiedz

4

Kwerendy związane z serwerami korzystają z pamięci z obszaru poza pulą buforów SQL Server o nazwie memToLeave, która służy do obsługi wątków połączeń, a teraz także do sql clr i innych rzeczy. W przypadku wersji 32-bitowej ma rozmiar 384 MB, który może być niewystarczający w przypadku niektórych scenariuszy.

Jeśli trzeba dostosować konfigurację SQL Server pamięci, a w szczególności na obszarze MemToLeave znajdziesz wyjaśnienie na poniższym blogu:

SQL Server Memory Configuration, Determining memToLeave Settings

+1

FYI - Stary link już nie działa, dodano nowy. – Mansfield

+0

To było chwilę temu. Czy powiedziałbyś, że ta rada jest wciąż aktualna, John? Z wielu forów wydaje się, że jest to powracający problem i wciąż wygląda jak wyciek pamięci. W tej chwili domyślne ustawienie MemToLeave jest dobre przez pierwsze kilka miesięcy użytkowania, a następnie nagle żaden z serwerów połączonych dostępem nie ma wystarczającej ilości pamięci. Z pewnością istnieje sposób na ponowne zainicjowanie tylko pamięci poza pulą i procesów zależnych od niego. – Adamantish

+0

Jakiego systemu operacyjnego używasz? Czy to 64bit? Jakiej wersji SQL Server używasz itp. –