SQL Server 中对网络数据库文件的支持说明

本文介绍对 SQL Server 中的网络数据库文件的支持,以及如何将 SQL Server 配置为将数据库存储在网络服务器或 NAS 存储服务器上。

原始产品版本:SQL Server
原始 KB 数: 304261

总结

Microsoft通常建议使用存储区域网络(SAN)或本地附加磁盘来存储 Microsoft SQL Server 数据库文件,因为此配置优化了 SQL Server 性能和可靠性。 默认情况下,不会对 SQL Server 启用存储在网络服务器或网络连接存储(NAS)服务器上的网络数据库文件。

但是,可以将 SQL Server 配置为将数据库存储在网络服务器或 NAS 服务器上。 用于此目的的服务器必须满足 SQL Server 对数据写入排序和写通保证的要求。 详细信息部分详细介绍了这些内容。

以下条件描述了网络数据库文件的使用,这些文件存储在网络服务器或 NAS 服务器上:

  • 默认情况下,在 Microsoft SQL Server 2008 R2 及更高版本中启用此使用。

  • 这一用法要求 -T1807 启动跟踪标志在 SQL Server 2008 和更低版本中Microsoft工作。 从 SQL Server 2012 开始,不再需要跟踪标志。 有关如何启用启动跟踪标志的详细信息,请参阅数据库引擎服务启动选项

Windows 硬件质量实验室(WHQL)限定的设备

Microsoft Windows 服务器和网络服务器或符合 Windows 硬件质量实验室(WHQL)资格的 NAS 存储服务器自动满足支持 SQL Server 存储设备所需的数据写入排序和写入保证。 Microsoft支持这些配置中的应用程序和存储相关问题。

注意

为了受 SQL Server 支持,NAS 存储解决方案还应满足下载文档中列出的所有要求: SQL Server IO 可靠性计划要求

其他设备

如果将非 WHQL 限定的存储设备与 SQL Server 配合使用,该存储设备支持本文所述的事务数据库使用的 I/O 保证,Microsoft将为基于 SQL Server 和 SQL Server 的应用程序提供完全支持。 但是,设备或其存储子系统出现问题或原因将转介给设备制造商。 如果使用不支持 I/O 保证的非 WHQL 限定的存储设备进行本文中所述的事务数据库使用,Microsoft无法为 SQL Server 或基于 SQL Server 的应用程序提供支持。 若要确定非 WHQL 限定的存储设备是否支持本文中所述的事务数据库使用的 I/O 保证,或者是否专为数据库使用而设计,请咨询设备供应商。 此外,请与设备供应商联系,验证是否已正确部署并配置了设备以供事务数据库使用。

详细信息

默认情况下,在 SQL Server 2008 和更早版本中,无法在网络文件共享上创建 SQL Server 数据库。 在映射或 UNC 网络位置上创建数据库文件的任何尝试都生成以下错误消息之一:

  • 错误消息 1

    5105“设备激活错误”

  • 错误消息 2

    5110“文件”file_name“在数据库文件不支持的网络设备上。

这是预期的行为。 跟踪标志 1807 会绕过检查,并允许使用基于网络的数据库文件配置 SQL Server。 SQL Server 和其他大多数企业数据库系统都使用事务日志和相关恢复逻辑在系统发生故障或非托管关闭时保持事务数据库一致性。 这些恢复协议依赖于直接写入磁盘介质的能力,以便在操作系统输入/输出(I/O)写入请求返回到数据库管理器时,恢复系统可以确保写入已完成或写入完成可以保证。 任何软件或硬件组件违反此协议的任何故障都可能导致系统故障时部分或总数据丢失或损坏。 有关 SQL Server 中日志记录和恢复协议的这些方面的详细信息,请参阅 SQL Server 中扩展数据可靠性的日志记录和数据存储算法的说明。

Microsoft不支持 NAS 或网络存储服务器上的 SQL Server 网络数据库文件,但不符合这些写入和写入顺序要求。

由于网络错误危及数据库完整性的风险,以及网络文件共享用于存储数据库可能带来的性能影响,Microsoft建议将数据库文件存储在本地磁盘子系统或存储区域网络(SAN)上。

网络连接存储(NAS)系统是基于文件的存储系统,客户端通过使用网络协议(如 TCP/IP)通过网络重定向程序附加到该存储系统。 默认情况下,如果访问磁盘资源需要映射共享,或者磁盘资源通过 UNC 路径(例如,\Servername\Sharename)在网络上显示为远程服务器,则不支持磁盘存储系统作为 SQL Server 数据库的位置。

性能问题

SQL Server 与其他企业数据库系统一样,可以在 I/O 子系统上放置大负载。 在大多数大型数据库应用程序中,物理 I/O 配置和优化在整体系统性能中起着重要作用。 需要考虑三个主要 I/O 性能因素:

  • I/O 带宽:聚合带宽(通常以每秒兆字节为单位)测量,可以持续到数据库设备。
  • I/O 延迟:数据库系统请求与 I/O 请求完成的点之间的延迟(通常以毫秒为单位)。
  • CPU 成本:主机 CPU 成本(通常以 CPU 微秒为单位)为数据库系统完成单个 I/O。

这些 I/O 因素中的任何一个都可能成为瓶颈,在为数据库应用程序设计 I/O 系统时,必须考虑所有这些因素。

采用最简单的形式,NAS 解决方案使用标准网络重定向程序软件堆栈、标准网络接口卡(NIC)和标准以太网组件。 此配置的缺点是,所有文件 I/O 都通过网络堆栈进行处理,并受网络本身的带宽限制的约束。 这可以产生性能和数据可靠性问题,尤其是在需要高级别文件 I/O 的程序(如 SQL Server)中。 在某些通过 Microsoft 测试的 NAS 配置中,I/O 吞吐量是同一服务器上直接附加存储解决方案的三分之一(1/3)。 在同一配置中,通过 NAS 设备完成 I/O 的 CPU 成本是本地 I/O 的两倍。 随着 NAS 设备和网络基础结构的发展,这些比率也可能相对于直接连接的存储或 SAN 提高。 此外,如果应用程序数据大多缓存在数据库缓冲池中,并且未遇到任何概述的 I/O 瓶颈,则基于 NAS 的系统的性能可能足以满足应用程序的需求。

备份和还原注意事项

SQL Server 提供用于备份的虚拟设备接口(VDI)。 VDI 为备份软件供应商提供高性能、可缩放且可靠的方法来执行热备份和还原 SQL Server 数据库。

备份软件通过 VDI 在 NAS 设备上存储的数据库文件上运行,而没有特定于 NAS 的特殊支持。 但是,这会导致在备份和还原期间产生大量额外的网络流量。 在通过 VDI 进行备份期间,SQL Server 远程读取文件,并将数据传递给在 SQL Server 计算机上运行的第三方备份软件。 还原操作类似。

为了避免额外的网络开销,备份供应商必须向备份供应商和 NAS 供应商提供特定于 NAS 的支持。 SQL Server VDI 允许备份软件利用 NAS 设备支持的硬件(拆分镜像)或软件(写入复制)技术,将数据库文件快速复制到 NAS。 这些技术不仅避免了通过网络复制文件的开销进行备份,还可以按数量级顺序减少还原时间。

存储在 NAS 上的备份容易受到影响存储在 NAS 上的数据库文件的相同故障的影响。 应考虑通过将备份复制到备用媒体来保护这些备份。

注意

如果在不使用 SQL Server VDI 支持的情况下使用 NAS 备份技术,则可能会遇到备份中的数据库损坏。 此类损坏包括日志和数据文件之间的撕裂页或数据文件之间的不一致(如果这些文件存储在单独的设备上)。 在还原数据库并访问损坏的数据之前,SQL Server 可能无法检测到已撕裂的页面或不一致。 Microsoft不支持使用与 SQL Server 协调的 NAS 备份技术。

SQL Server VDI 的备份支持和 NAS 供应商支持各不相同。 请咨询 NAS 和备份软件供应商,了解有关 VDI 支持的详细信息。

Microsoft敦促正在考虑为 SQL Server 数据库部署 NAS 解决方案的客户咨询其 NAS 供应商,以确保端到端解决方案设计适用于数据库。 许多 NAS 供应商都有最佳做法指南和经过认证的配置供此使用。 Microsoft还建议客户对其 I/O 性能进行基准测试,以确保之前提到的任何 I/O 因素都会导致其应用程序中出现瓶颈。

以下列表描述了对 SQL 故障转移群集上基于网络的文件的支持:

其他注释

将数据库软件与 NAS 产品配合使用不正确,或者数据库与配置不当的 NAS 产品一起使用可能会导致数据丢失,包括数据库丢失总量。 如果 NAS 设备或网络软件不完全遵循数据保证(如写入排序或写通),则硬件、软件甚至电源故障可能会严重损害数据完整性。

参考