尝试使用VFP ODBC驱动程序更新到链接服务器时“文件映射的内存不足”

时间:2011-07-14 06:32:38

标签: sql-server-2008 visual-foxpro

我在SQL Server 2008中有一个链接服务器,它使用MDASQL提供程序访问Visual Fox Pro ODBC DSN。

尝试执行简单查询时,我收到以下错误:

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 = 62MB
  • odbctable.cdx = 9.85MB
  • odbctable.fpt = 200MB

我已经将SQL实例配置为以'-g'参数开头,值为1024,以便为此操作留出一个内存gig(这是一个没有其他活动的测试服务器)。

使用的参考:http://msdn.microsoft.com/en-us/library/ms190737.aspx

考虑到所涉及文件的大小,查询的简单性以及我已经预留了一大笔RAM供它使用,我对如何解决这个问题已经没有了想法。

有人可以建议解决这些错误的解决方案,以便我可以使用上面的更新查询更新目标dbf吗?

2 个答案:

答案 0 :(得分:1)

虽然当我遇到同样的问题时你似乎有足够的内存,但是停止并启动SQL Server服务,然后运行sp_dropserversp_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='########'

答案 1 :(得分:0)

确保您没有违反环境或表结构中任何VFP的ODBC限制。特别要注意的是,ODBC还没有被支持一段时间。查看here以获取一系列限制。是否有可能使用OLEDB驱动程序?如果是这样,请搜索“VFPOLEDB驱动程序下载”以获取所需内容。