对压缩卷上SQL Server数据库的支持说明

本文介绍SQL Server压缩驱动器上的数据库文件存储行为。

原始产品版本:SQL Server
原始 KB 编号: 231347

摘要

NTFS 或 FAT 压缩卷不支持SQL Server数据库,SQL Server 2005 及更高版本的特殊情况除外。 压缩卷不保证与扇区一致的写入,这些写入是保证在某些情况下事务恢复所必需的。

对于 SQL Server 2005 及更高版本,压缩驱动器上的数据库文件存储的行为如下:

  • 如果数据文件属于只读文件组,则允许该文件。

  • 如果数据文件属于只读数据库,则允许该文件。

  • 如果事务日志文件属于只读数据库,则允许该文件。

  • 如果尝试在压缩驱动器上打开包含文件的读/写数据库,SQL Server将生成以下错误:

    消息 5118,级别 16,状态 2,第 1 行 文件“<file_name>”已压缩,但不驻留在只读数据库或文件组中。 必须解压缩该文件。

有关 SQL Server 2008 中只读数据库和只读文件组的排除项的详细信息,请转到以下 MSDN 网站:

只读文件组和压缩

注意

本主题也适用于 SQL Server 2012 及更高版本。

更多信息

虽然在物理上可以在压缩卷上添加SQL Server数据库,但我们不建议这样做,我们不支持这样做。 造成这种情况的根本原因包括:

  • 性能

    压缩卷上的数据库可能会导致显著的性能开销。 量将有所不同,具体取决于 I/O 的量和读取与写入的比率。 然而,在某些情况下,观察到超过500%的退化。

  • 数据库恢复

    数据库的可靠事务性恢复需要扇区一致的写入,并且压缩卷不支持此方案。 第二个问题涉及内部恢复空间管理。 SQL Server在内部保留数据库文件中的预分配空间以供回滚。 在压缩卷上,在预分配的文件上可能会收到 空间不足 错误,这会干扰成功恢复。

在某些情况下,SQL Server备份到压缩卷或压缩文件夹不会成功。 发生此问题时,会收到以下错误消息之一。

  • 在 Windows Vista 和更高版本的 Windows 中

    STATUS_FILE_SYSTEM_LIMITATION 由于文件系统限制,请求的操作无法完成
    操作系统错误 665 (由于文件系统限制而无法完成请求的操作)

  • 在早期版本的 Windows 中

    STATUS_INSUFFICIENT_RESOURCES系统资源不足,无法完成请求的服务操作系统错误 1450 (系统资源不足,无法完成请求或 33 (进程无法访问该文件,因为另一个进程锁定了文件的一部分。)

有关此问题的详细信息,请参阅 NTFS 卷中碎片严重的文件可能不会超过特定大小

注意

  • 知识库文章中介绍的适用于 Windows Vista 和更高版本的 Windows 的修补程序967351可能无法解决SQL Server备份未成功到压缩卷或压缩文件夹的问题。 但是,此修补程序有助于调解问题。
  • 应用知识库文章 967351中讨论的修补程序后,必须使用 参数设置启用 /L 压缩的驱动器的格式。 使用 /L 参数格式化启用压缩的驱动器时,每个文件记录段的字节数从 1,024 字节增加到 4,096 字节。

SQL Server备份到压缩卷可以节省磁盘空间。 但是,它们可能会在备份操作期间增加 CPU 使用率。 我们始终建议使用 BACKUP 校验和工具来帮助保证数据完整性。

SQL Server要求系统支持向稳定介质的有保证交付,如SQL Server I/O 可靠性计划要求中所述。

有关SQL Server数据库引擎的输入和输出要求的详细信息,请参阅Microsoft SQL Server 数据库引擎输入/输出要求