我用的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了。那位大侠救救我吧。先谢过了。

解决方案 »

  1.   

    你试试一个程序 2W or 4W 会出错嘛?是不是关键字段位数不够了或者什么一个表24W条数据,真没试过,一会试试看。晕!
      

  2.   

    xixuemao(俺可是㊣②㈧经儿滴人) :是三个程序对应的三个表。表的记录数一般在200W左右。每小时大概8W左右。
      

  3.   

    Use ALTER DATABASE to set a smaller FILEGROWTH or to set a new size.
    ==========================这里说的是文件增长的问题,默认数据库好像是按百分比10%增长的,你在企业管理器相应数据库的属性中把增长改为按字节数增长看看,一般改为20M到100M的增长速度就可以了另外,最好设置数据库为自动收缩(因为你清理旧数据的话如果不收缩的话,数据文件大小是不会自动缩小的)
      

  4.   

    hqhhh(枫叶):日志文件我设置的是简单(simple)大小没有超过10M hthunter(核桃-我的心在下雨,雨中我和她携手漫步) :我已经把默认按百分比10%增长改成 20%增长。大小不受限制;我有20G左右的剩余空间,就算他不自动收缩也有地方放。
      

  5.   

         关注!!!学习中。。
           hthunter(核桃-我的心在下雨,雨中我和她携手漫步)  说得很好
      

  6.   

    我刚刚接触delphi,还不太懂
    只能帮你顶一下^
      

  7.   

    SQL 还有些什么关键设置不?
      

  8.   

    是你的SQL SERVER 的版本问题:    SQL SERVER 2000 标准版支持的数据库大小最大不超过 4G    建议找M$ 买套企业版
      

  9.   

    sql应该没什么关键设置了吧?
      

  10.   

    cdsgajxlp(起名很难):怎么找邹键?我用的是企业版。但是D版的。^-^
      

  11.   

    去sqlserver版找邹建,他厉害啊
    这是  Delphi 数据库相关  版 啊
      

  12.   

    real_name(*真名):好的。有认识他的,希望请他过来看一下。
    谢谢!
      

  13.   

    Operation cannot be performed while executing asynchronously.
    这个错误似乎我碰到过,是在线程内用同一个ADOConnection时产生的,听人说ADOConnection是线程不安全,后来我用BDE了。
    第二个错误没碰到过,从字面上看应该是去自动增长数据库文件时产生的(好像不是日志文件,是数据数据文件),有可能是按20%增长时,需要新分配的空间比较大,在短时间内无法完成,所以TimeOut?
      

  14.   

    会不会超时造成的,sqlserver我一个2.5g的数据库,带日志3g 我腾11g空间硬是不让我还原上去
    把那个时间改长点,我在sqlserver对数据进行大规模数据操作500w,偶尔也会碰到断掉的情况
      

  15.   

    错误编号: 5144 级别:10
    数据库 '%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性能不行,考虑提高硬件配置.
      

  16.   

    问题解决了。就像 belllab(菜鸟)  和  zjcxc(邹建) 所说。我设置的增长幅度太大了。
    20% 太大。  30GB的20%为 6GB 。在短时间内不能分配出来。所以报错。
    我改成 100MB 的增幅后运行了20小时了,还没有出现问题。高兴。结贴。谢谢大家。谢谢  belllab(菜鸟)  和  zjcxc(邹建) ; zjcxc(邹建) 不愧为SQL高手。你出的新书我一定买。书店没有。我在网上也要买一本。^-^