WIN2008+SQL 2008,创建数据库的时候指定了4个数据文件并给出初始化大小为1024MB,在使用中想修改数据文件大小,在管理界面中在线更改初始化大小为10240MB,且更改成功,发现文件大小也发生了改变,但大约1个小时以后再看数据文件又变回了1024MB,在管理界面中看数据文件大小也同样变成了1024MB,于是通过如下语句在线修改:
ALTER DATABASE HO
MODIFY FILE
    (NAME = P1D1F1,
    SIZE = 10240MB); 
GO
ALTER DATABASE HealthOne
MODIFY FILE
    (NAME = P1D1F2,
    SIZE = 10240MB); 
GO
ALTER DATABASE HealthOne
MODIFY FILE
    (NAME = P1D2F3,
    SIZE = 10240MB); 
GO
ALTER DATABASE HealthOne
MODIFY FILE
    (NAME = P1D2F4,
    SIZE = 10240MB); 
GO语句执行成功后看到界面和实际文件都变为10240MB,但大约过了一个小时查看时发现数据文件又变回了初始的1024MB,日志也未记录任何相关报错信息,请问是什么原因?为什么会这样?

解决方案 »

  1.   

    我也不信,但事实确实如此,执行后结果如下:
    name fileid filename filegroup size maxsize growth usageP1D1F1 6 M:\HISDATE\P1D1F1.ndf PRIMARY 10485760 KB Unlimited 10% data only
    P1D1F2 7 M:\HISDATE\P1D1F2.ndf PRIMARY 10485760 KB Unlimited 10% data only
    P1D2F3 8 N:\HISDATA\P1D2F3.ndf PRIMARY 10485760 KB Unlimited 10% data only
    P1D2F4 9 N:\HISDATA\P1D2F4.ndf PRIMARY 10485760 KB Unlimited 10% data only
    -----------------------------------
    但一小时左右过后又变为如下结果:
    name fileid filename filegroup size maxsize growth usage
    P1D1F1 6 M:\HISDATE\P1D1F1.ndf PRIMARY 1048576 KB Unlimited 10% data only
    P1D1F2 7 M:\HISDATE\P1D1F2.ndf PRIMARY 1048576 KB Unlimited 10% data only
    P1D2F3 8 N:\HISDATA\P1D2F3.ndf PRIMARY 1048576 KB Unlimited 10% data only
    P1D2F4 9 N:\HISDATA\P1D2F4.ndf PRIMARY 1048576 KB Unlimited 10% data only
    ------------------------------------
    请问有遇到过类似情况的人没?或者ISCSI设备会有类似问题?或者有其他的原因导致这样的结果?求真相!~
      

  2.   

    难道真的无人知晓原因,忘记说了,主数据文件20多G可用空间700M左右,在PRIMARY文件组又添加了4个如上述的1024MB的数据文件后,又修改文件大小,但后来不管修改成5G还是10G总是过一段时间后又回到1024MB,日志中没有记录原因和事件,求解释,求真相~~~~~
      

  3.   

    我想请问一下MODIFY FILE是在线操作还是需要离线的操作,因为在生产过程中数据存在频繁的读写,在频繁的访问下修改数据文件大小是否可行?
      

  4.   


    在线操作未发现有问题。
    针对你的修改大小后又自动还原的问题,可以用profiler来监控,查找原因。
      

  5.   

    不劳各位费心了
    原因如下:数据库设置了自动收缩选项,但工作在完整模式下,因此在日常的工作中并未出现截断所以未出现太大的文件大小变化,因而未曾注意.在上述描述的问题中提交了MODIFY FILE的空间请求之后在不定长的时间内发生了 AUTO_SHRINK请求,脏读导致了丢失更新:即每个事务都不知道其他事务的存在,最后的更新将覆盖由其他事务所做的更新.
    询问原因得知由于该生产业务原来运行在简单模式下因此设置了自动收缩选项,但后来更改了完整工作模式却没有设置AUTO_SHRINK为OFF正式由于这种怪异的组合并未导致文件大小异常的变化而未引起注意,但事实上肯定影响了性能:一面在请求空间,在请求期间去进行自动收缩...
    查询日志发现之前在数据文件(包括日志)请求空间增长的时候发生了大量的I/O错误记录:SQL Server has encountered ## occurrence(s) of I/O requests taking longer than 15 seconds...询问得知因为这些错误记录甚至联系过存储硬件厂商查找原因未果,将AUTO_SHRINK更该为OFF的情况发现并未再发生I/O错误记录,事实上证明完整工作模式下的AUTO_SHRINK ON选项也会导致I/O错误日志记录,包括微软在内的各家文档都会给出I/O错误联系硬件厂商或者更换硬件解决磁盘I/O瓶颈的建议,在此给出另外一种可能的解释,为各位查找问题提供参考.
      

  6.   

    不劳楼上费心了,还不至于犯新手菜鸟100G的日志按10%增长的错误,现在CSDN混分的太多啦,散了
      

  7.   

    头一次见生产环境DB在FULL模式下AUTO_SHRINK设置成ON的,受教了。
      

  8.   

    你就一混分的,还是继续洗澡凉快吧,至于为什么FULL模式下AUTO_SHRINK为ON上面也给出了分析原因,你受教了是因为你确实需要受教~