SQL Server链接服务器查询内存不足

时间:2021-05-14 15:42:50

I have a DBF file on a network share that I'm trying to select into a SQL Server table.

我在网络共享上有一个DBF文件,我正在尝试选择一个SQL Server表。

This query:

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

... throws this error:

...抛出此错误:

OLE DB provider "MSDASQL" for linked server "MyLinkedServer" returned message "[Microsoft][ODBC Visual FoxPro Driver]Not enough memory for file map.".
Msg 7399, Level 16, State 1, Line 11 The OLE DB provider "MSDASQL" for linked server "MyLinkedServer" reported an error. The provider ran out of memory.
Msg 7320, Level 16, State 2, Line 11 Cannot execute the query "SELECT * FROM DP" against OLE DB provider "MSDASQL" for linked server "MyLinkedServer".

链接服务器“MyLinkedServer”的OLE DB提供程序“MSDASQL”返回消息“[Microsoft] [ODBC Visual FoxPro驱动程序]没有足够的内存用于文件映射。”消息7399,级别16,状态1,行11链接服务器“MyLinkedServer”的OLE DB提供程序“MSDASQL”报告错误。提供程序内存不足。消息7320,级别16,状态2,行11无法针对链接服务器“MyLinkedServer”对OLE DB提供程序“MSDASQL”执行查询“SELECT * FROM DP”。

I've read about using SYS(3050) to release FoxPro's memory. I can't figure out how to execute that against the linked server though.

我已经读过使用SYS(3050)来释放FoxPro的内存。我无法弄清楚如何针对链接服务器执行该操作。

2 个解决方案

#1


4  

Linked server queries use memory from an area outside of the SQL Server buffer pool called memToLeave, which is used for servicing connection threads and now the sql clr amongs other things. On 32-bit it's 384 MB in size which can be inadequate for some scenarios.

链接服务器查询使用来自SQL Server缓冲池外部区域的内存,称为memToLeave,用于服务连接线程,现在是sql clr等。在32位上,它的大小为384 MB,这在某些情况下可能不合适。

If you need to adjust your SQL Server Memory configuration and in particular the memToLeave area you will find an explanation on the following blog:

如果您需要调整SQL Server内存配置,特别是memToLeave区域,您将在以下博客中找到解释:

SQL Server Memory Configuration, Determining memToLeave Settings

SQL Server内存配置,确定memToLeave设置

#2


0  

If you're running SQL Server 2005 or even 2008 SP1 or earlier there's a hotfix for a memory leak issue: http://support.microsoft.com/kb/974130

如果您正在运行SQL Server 2005甚至2008 SP1或更早版本,则会出现内存泄漏问题的修补程序:http://support.microsoft.com/kb/974130

#1


4  

Linked server queries use memory from an area outside of the SQL Server buffer pool called memToLeave, which is used for servicing connection threads and now the sql clr amongs other things. On 32-bit it's 384 MB in size which can be inadequate for some scenarios.

链接服务器查询使用来自SQL Server缓冲池外部区域的内存,称为memToLeave,用于服务连接线程,现在是sql clr等。在32位上,它的大小为384 MB,这在某些情况下可能不合适。

If you need to adjust your SQL Server Memory configuration and in particular the memToLeave area you will find an explanation on the following blog:

如果您需要调整SQL Server内存配置,特别是memToLeave区域,您将在以下博客中找到解释:

SQL Server Memory Configuration, Determining memToLeave Settings

SQL Server内存配置,确定memToLeave设置

#2


0  

If you're running SQL Server 2005 or even 2008 SP1 or earlier there's a hotfix for a memory leak issue: http://support.microsoft.com/kb/974130

如果您正在运行SQL Server 2005甚至2008 SP1或更早版本,则会出现内存泄漏问题的修补程序:http://support.microsoft.com/kb/974130