select * from Openrowset('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;HDR=YES;IMEX=1;Database=\\172.16.1.29\unrar\data.xls',
'select * from [Sheet1$]')
在一台数据库服务器上执行上述语句,开始的时候不会报错,并能查出结果,但次数多了之后,就报下面的错误,重启动数据库服务器之后,错误消失,但使用一段时间之后,错误依旧,不知道什么原因,请高人指点迷津:
补充:数据库服务器配置:  操作系统:32位 windows 2008
内存:64G
硬盘:600TB
错误信息如下:
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。提供程序内存不足。
消息 7320,级别 16,状态 2,第 1 行
无法对链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 执行查询"select * from [sheet$]"。

解决方案 »

  1.   

    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 
    'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1$
      

  2.   

    补充一下,数据库服务器和文件分别不在同一台机器上,Excel文件很小,只有300K
      

  3.   

    估计是内存调度"BUG",在32位系统上,AWE内存只能缓存数据,而不能用作SQLOS内部使用问题大约出在这里
    解决这个也比较简单,先在其他SQL服务器如台式机里查询EXCEL数据,再将数据倒入正式数据库
      

  4.   

    我们有的单个Excel文件数据量巨大(一个Excel数据文件将近1G),如果从一台机器查询,然后导入到另外一台机器的话,效率会非常的低