我用的Windows 2000 Advance Server + SQL Server 2000 做的C/S系统。
硬件环境:2*2.4Gcpu,2GRam,80GSCSI,MSI7320,
问题出在服务器端,服务器端不能正常的给SQL Server 2000 写入记录;
大概每运行10小时左右就会出现这个情况,有时三四个小时,有十二十几个小时。
我用多于一个程序给SQL写记录,每个程序每小时大概有8W条记录,二个程序就是16W左右,三个程序就有24W条记录左右,三个程序同时写SQL。用Query进行insert。数据库在硬盘上的文件为 20G-50G左右。在作业计划那里设置每天进行过期数据Delete;出错提示:
---------------------------
实时提取文件到数据库
---------------------------
Operation cannot be performed while executing asynchronously.
---------------------------
确定
---------------------------
这个是出错时弹出来的按钮内容;5144 :
Autogrow of file 'MyDataBase_Date' in database 'MyDataBase' cancelled or timed out after 30657 ms. Use ALTER DATABASE to set a smaller FILEGROWTH or to set a new size.
这个是在事件查看器里面的信息;出现错误后,就算是在SQL查询分析器里面也不能对表进行Insert操作。必须重启SQL后才可以。有的时候重启SQL后还不行,就得重启Windows了。那位大侠救救我吧。先谢过了。
硬件环境:2*2.4Gcpu,2GRam,80GSCSI,MSI7320,
问题出在服务器端,服务器端不能正常的给SQL Server 2000 写入记录;
大概每运行10小时左右就会出现这个情况,有时三四个小时,有十二十几个小时。
我用多于一个程序给SQL写记录,每个程序每小时大概有8W条记录,二个程序就是16W左右,三个程序就有24W条记录左右,三个程序同时写SQL。用Query进行insert。数据库在硬盘上的文件为 20G-50G左右。在作业计划那里设置每天进行过期数据Delete;出错提示:
---------------------------
实时提取文件到数据库
---------------------------
Operation cannot be performed while executing asynchronously.
---------------------------
确定
---------------------------
这个是出错时弹出来的按钮内容;5144 :
Autogrow of file 'MyDataBase_Date' in database 'MyDataBase' cancelled or timed out after 30657 ms. Use ALTER DATABASE to set a smaller FILEGROWTH or to set a new size.
这个是在事件查看器里面的信息;出现错误后,就算是在SQL查询分析器里面也不能对表进行Insert操作。必须重启SQL后才可以。有的时候重启SQL后还不行,就得重启Windows了。那位大侠救救我吧。先谢过了。
解决方案 »
- ImageList如何动态添加png?
- SetKeyboardState 256个字节数组分别代表什么
- 用TWebBrowser做的浏览器,在浏览网页时总会跳出“脚本错误信息”,怎样屏蔽它。还有该浏览器使用一段时间后总会提示“Mshtml.dll”异常
- 高分求检测打印机WIN98和2000的例子!!!!
- 哪里可以找到:实现QQ工具中好友、陌生人切换的第三方控件。
- 各位好漢!我是初學,請幫幫忙。
- ★★★郁闷,散分!关于read、readln、write、writeln的困惑!请不惜指教!谢谢!
- 程序员是穷光蛋
- 现在用delphi做一个自定义公式,想直接用excel的公式解析,如何实现??
- 我该用delphi继续我的编程?
- 怎样取得 Sql 语句中的所有表名
- 在activexform中打开一个新窗口时,始终出错
==========================这里说的是文件增长的问题,默认数据库好像是按百分比10%增长的,你在企业管理器相应数据库的属性中把增长改为按字节数增长看看,一般改为20M到100M的增长速度就可以了另外,最好设置数据库为自动收缩(因为你清理旧数据的话如果不收缩的话,数据文件大小是不会自动缩小的)
hthunter(核桃-我的心在下雨,雨中我和她携手漫步) 说得很好
只能帮你顶一下^
这是 Delphi 数据库相关 版 啊
谢谢!
这个错误似乎我碰到过,是在线程内用同一个ADOConnection时产生的,听人说ADOConnection是线程不安全,后来我用BDE了。
第二个错误没碰到过,从字面上看应该是去自动增长数据库文件时产生的(好像不是日志文件,是数据数据文件),有可能是按20%增长时,需要新分配的空间比较大,在短时间内无法完成,所以TimeOut?
把那个时间改长点,我在sqlserver对数据进行大规模数据操作500w,偶尔也会碰到断掉的情况
数据库 '%3!' 中文件 '%1!' 的自动增长在 %5! 毫秒后已取消或出现超时。使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小。 2052
这个问题说明你的处理要求数据库立即分配 xx MB 的存储空间用于满足你的处理需求,但数据库在 xx 毫秒无法完成这个分配.
解决的办法:
1. 不要使用自动收缩, 自动收缩会定期收容数据文件的空闲空间,则处理需要的时候却要扩大数据文件,这两者相反的处理,是冲突的
设置方法:
ALTER DATABASE MyDataBase SET AUTO_SHRINK OFF2. 如果你不进行事务日志备份, 也不需要利用事务日志做处理,则可以将数据库恢复模型设置为SIMPLE, 减少日志记录, 减轻磁盘I/O压力
ALTER DATABASE MyDataBase SET RECOVERY SIMPLE3. 设置更小的文件增长步骤,以减少每次数据文件分配空间所需要的时间
ALTER DATABASE MyDataBase
MODIFY FILE(
NAME='MyDataBase_Date',
FILEGROWTH=50 MB) --不要使用百分比, 不然数据文件大了的话,这个百分比的结果就很大4. 为数据文件预先分配足够大的空间,避免数据处理时分配空间
ALTER DATABASE MyDataBase
MODIFY FILE(
NAME='MyDataBase_Date',
SIZE=500 GB) -- 预设数据文件大小为500GB
5. 如果通过上述处理还无法解决问题,则应该考虑你的磁盘I/O性能不行,考虑提高硬件配置.
20% 太大。 30GB的20%为 6GB 。在短时间内不能分配出来。所以报错。
我改成 100MB 的增幅后运行了20小时了,还没有出现问题。高兴。结贴。谢谢大家。谢谢 belllab(菜鸟) 和 zjcxc(邹建) ; zjcxc(邹建) 不愧为SQL高手。你出的新书我一定买。书店没有。我在网上也要买一本。^-^