«Недостаточно памяти для сопоставления файлов» при попытке обновления связанного сервера с помощью драйвера VFP ODBC - PullRequest
3 голосов
/ 14 июля 2011

У меня есть связанный сервер в SQL Server 2008, который использует поставщик MDASQL для доступа к ODBC DSN Visual Fox Pro.

При попытке выполнить простые запросы я получаю следующие ошибки:

OLE DB provider "MSDASQL" for linked server "odbclinkedserver" returned message "[Microsoft][ODBC Visual FoxPro Driver]Not enough memory for file map.".

Msg 7399, Level 16, State 1, Line 1 The OLE DB provider "MSDASQL" for linked server "odbclinkedserver" reported an error. The provider ran out of memory.

Msg 7306, Level 16, State 2, Line 1 Cannot open the table "odbctable" from OLE DB provider "MSDASQL" for linked server "odbclinkedserver".

Я пытаюсь запустить этот запрос на обновление, который является целью действия:

update odbclinkedserver...odbctable
set memofield = m1.blob
from sqlsvrtable m1
where m1.int_1 = odbctable.int_1
and m1.int_2 = odbctable.int_2
and m1.time= odbctable.time
and odbctable.date= '2011-06-28'

Я также попытался выполнить несколько более простых запросов и все еще получаю те же ошибки:

select top 1 * from odbclinkedserver...odbctable

Источник DSN - это каталог свободных таблиц.Размеры используемых файлов:

  • odbctable.dbf = 62 МБ
  • odbctable.cdx = 9,85 МБ
  • odbctable.fpt = 200 МБ

Я настроил экземпляр SQL на запуск с параметром -g со значением 1024, чтобы выделить для этой операции гигабайт памяти (это тестовый сервер без других действий).

Используемая ссылка: http://msdn.microsoft.com/en-us/library/ms190737.aspx

Учитывая размер используемых файлов, простоту запросов и то, что я выделил гигабайт оперативной памяти для его использования, у меня заканчиваетсяидей, как решить эту проблему.

Кто-нибудь может предложить решение для устранения этих ошибок, чтобы я мог обновить целевой dbf с помощью запроса на обновление выше?

Ответы [ 2 ]

1 голос
/ 25 апреля 2013

Хотя у вас, кажется, достаточно памяти, когда у меня возникла та же проблема, остановка и запуск службы SQL Server с последующим запуском sp_dropserver и sp_addlinkedserver были достаточны для решения проблемы:

IF  EXISTS (SELECT srv.name FROM sys.servers srv WHERE srv.server_id != 0 AND srv.name = N'DBF_XXX')EXEC master.dbo.sp_dropserver @server=N'DBF_XXX', @droplogins='droplogins'
GO
EXEC master.dbo.sp_addlinkedserver @server = N'DBF_XXX', @srvproduct=N'Microsoft Jet', @provider=N'VFPOLEDB', @datasrc=N'D:\Data To Import\XXX\data', @provstr=N'dBASE 5.0'

--For security reasons the linked server remote logins password is changed with ########
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'DBF_XXX',@useself=N'False',@locallogin=NULL,@rmtuser=N'Admin',@rmtpassword='########'
0 голосов
/ 14 июля 2011

Убедитесь, что вы не нарушаете никаких ограничений ODBC VFP ни в среде, ни в структурах таблиц. Особо отметим, что ODBC не был поддержан в течение некоторого времени. Проверьте здесь для хорошего списка ограничений. Возможно ли использование драйвера OLEDB для вас? В этом случае выполните поиск в Интернете по запросу «Загрузка драйвера VFPOLEDB», чтобы получить то, что вам нужно.

...