当前位置: 代码迷 >> Sql Server >> default pool 已满,如何解决?
  详细解决方案

default pool 已满,如何解决?

热度:89   发布时间:2016-04-25 00:47:54.0
default pool 已满,怎么解决??
我们服务器内存39G   ,硬盘500TB   ,最近在处理大数据量导入到数据库的过程中,老是报错default  pool 已满,我们对系统默认的配置也做了一些增大调节,但错误依旧,不知怎么处理,急啊!
------最佳解决方案--------------------
LZ,建议你分段读。
比如,先取出1万条,写个程序循环,我想EXCEL肯定有唯一键的吧。
例子
declare @int int
set @int=1
while @int>=1000000000
begin
      insert into 表
      select top 5000 * 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$]')
where 唯一键 not in(select 唯一键 from 表)
end

这样不就行了。
------其他解决方案--------------------
清理日志

设置成简单模式
------其他解决方案--------------------
引用:
清理日志

设置成简单模式
.
------其他解决方案--------------------
已经是这样的设置,还是不可以
------其他解决方案--------------------
查看一下,default pool是不是改变了?
------其他解决方案--------------------
http://msdn.microsoft.com/zh-cn/library/aa224760%28v=SQL.80%29.aspx
------其他解决方案--------------------
http://blogs.msdn.com/b/slavao/archive/2005/02/11/371063.aspx
自己去找答案吧
------其他解决方案--------------------
这是什么情况下会发生呢?
------其他解决方案--------------------
把将近1G的Excel文件通过分布式访问(Openrowset)的方式导入到数据库中
------其他解决方案--------------------
是因为数据加载至default pool,数据没来得及写得磁盘,将lazywrite跟checkpoint时间设小点应该就行
------其他解决方案--------------------
设置多少合适呢??怎么在系统中查看这两个值的默认值,谢谢!
------其他解决方案--------------------
32还是64BIT?什么平台、版本。。。
------其他解决方案--------------------
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$]')


在一台数据库服务器上执行上述语句,开始的时候不会报错,并能查出结果,但次数多了之后,就报下面的错误,重启动数据库服务器之后,错误消失,但使用一段时间之后,错误依旧,不知道什么原因,


错误信息如下:


消息 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$]"。



补充:

数据库服务器配置:   

操作系统:32位 windows 2008
内存:64G
硬盘:600TB

------其他解决方案--------------------
换个大硬盘那
  相关解决方案