当前位置: 代码迷 >> Sql Server >> 关于数据库快照的有关问题
  详细解决方案

关于数据库快照的有关问题

热度:91   发布时间:2016-04-24 19:04:43.0
关于数据库快照的问题
在镜像服务器(备机),创建数据库快照,有进程读取快照数据。
问题是:快照在使用一段时间后会报错:

The operating system returned error 665(由于文件系统限制,因此请求的操作无法完成) to SQL Server during a write at offset 0x00002535d88000 in file 'T:\SqlData\data_snap\XXXXDB_Data_20140113013000_snap.ss'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe system-level error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

Error: 17053, Severity: 16, State: 1.
T:\SqlData\data_snap\XXXXDB_Data_20140113013000_snap.ss: Operating system error 665(由于文件系统限制,因此请求的操作无法完成) encountered.

不知各位是否碰到过这样的问题或者这样的错误?解决方案是什么?谢谢了。
------解决方案--------------------
你的盘是FAT32还是NTFS格式的?
------解决方案--------------------
google了一下,解决方案:
1、运行DBCC CHECKDB看看有没有异常(原库,不是快照库)
2、把快照放到别的盘试试。
3、如果还遇到这种问题,只能删除快照并重建快照
------解决方案--------------------
This problem happens if a large number of ATTRIBUTE_LIST_ENTRY is needed to maintain a heavily fragmented file in NFTS. This behavior is explained in following KB article: 
?967351  A heavily fragmented file in an NTFS volume may not grow beyond a certain size 

The sparse files created by SQL Server for the database snapshots can get fragmented to these levels when large amounts of data modifications happen for the life of these snapshot files.

For a complete background of how SQL Server Engine uses NTFS sparse files and alternate data streams, refer to the following links:
?How It Works: SQL Server 2005 Database Snapshots (Replica)
?SQL Server reports operating system error 1450 or 1452 or 665 (retries)
?How It Works: SQL Server Sparse Files (DBCC and Snapshot Databases) Revisited
?How Database Snapshots Work
?DBCC CHECKDB (Transact-SQL) [See Remarks section for "Internal Database Snapshot"]

------解决方案--------------------
按照你的错误信息,可以按照提示,先:

dbcc checkdb(你的数据库)

另外,如果可以的话,做一个磁盘检测,看是否有坏块。
------解决方案--------------------
引用:
Quote: 引用:

其实做快照的话和你原库增长涉及不大。我是说分配盘,初始化的时候会有一个指定分配单元是4M还是8M还是多少的,如果库很大,我觉得是否可以把分配单元设大一点,我也没遇到过你这种情况,出现频率不高,就像你有几个快照就这个有问题,那么问题的根源很可能是在你的这个库上,而不是快照。你有没有检查过Windows事件有没有一些相关的信息?还有sqlserver的错误信息


谢谢!首先我还是没明白分配盘是什么意思?我的服务器硬盘是用的硬盘存储,阵列是Raid10,我的数据很大,我前面贴出来的错误就是数据库错误信息(readerrorlog),Windows事件没有相关的错误。
我把问题贴出来,也是自己尝试了很多办法,上网找了很多文章,但是最终没有解决,是希望能在这里碰到有遇到过同样问题并且解决了的大师。
再次感谢!我都不知道该怎么结帖。。。。


虽然用过这个数据库快照,但是确实没有出现过这个问题。

你上面说,你在这个磁盘上创建了多个快照,只有这1个快照有问题,那么就很有可能是这个数据库本身的问题。
------解决方案--------------------
这个是不是计算机硬盘的磁道坏了或者是操作系统的问题,能否把数据库部署到另外的计算机或者服务器上试试。
  相关解决方案