将 FILESTREAM 和 FileTable 与 AlwaysOn 可用性组一起使用
适用于: SQL Server - 仅限 Windows
本文包含将 FILESTREAM 和 FileTable 功能与 Always On 可用性组 中的 SQL Server 一起使用有关的信息。
支持所有 FILESTREAM 功能。 故障转移后,FILESTREAM 数据在可读辅助副本和新的主副本上均可访问。
支持部分 FileTable 功能。 故障转移后,FileTable 数据在主副本上是可访问的,但是在可读辅助副本上不可访问。
先决条件
- 在将使用 FILESTREAM 的数据库(具有或不具有 FileTable)添加到某一可用性组之前,请确保在承载该可用性组的可用性副本的每个服务器实例上都启用 FILESTREAM。 有关详细信息,请参阅 Enable and Configure FILESTREAM。
- 在基于 Windows Server 2012 的故障转移群集上,你应当应用在基于 Windows Server 2012 的故障转移群集上使用 FILESTREAM 和 FileTable 功能时无法访问 VNN FILESTREAM 共享中所述的修补程序,以使用虚拟网络名称 (VNN) 访问文件共享。 此修补程序也可在 Microsoft 更新目录中获取。
为 FILESTREAM 和 FileTable 访问使用虚拟网络名称 (VNN)
当您在 SQL Server实例上启用 FILESTREAM 时,将创建实例级别共享以便提供对 FILESTREAM 数据的访问。 可通过按以下格式使用计算机名称来访问此共享:
\\<computer_name>\<filestream_share_name>
但在 AlwaysOn 可用性组中,通过使用虚拟网络名称 (VNN) 虚拟化计算机的名称。 在该计算机是某一可用性组中的主副本,并且该可用性组中的数据库包含 FILESTREAM 数据时,还创建 VNN 范围的共享以便提供对 FILESTREAM 数据的访问。 这并不影响对 FILESTREAM 数据的 Transact-SQL 访问。 但是,使用文件系统 API 的应用程序必须使用 VNN 范围的共享,它具有以下格式的路径:
\\<VNN>\<filestream_share_name>
在发生以下事件之一时将创建 VNN 范围的共享。
你将包含 FILESTREAM 数据的数据库添加到主要副本上的 AlwaysOn 可用性组。 在此情况下,共享
\\<computer_name>\<filestream_share_name>
已存在。 创建共享\\<VNN>\<filestream_share_name>
。您对具有可用性组的主副本上的文件 i/o 流访问启用 FILESTREAM。 创建以下共享:
\\<computer_name>\<filestream_share_name>
。\\<VNN1>\<filestream_share_name>
。\\<VNN2>\<filestream_share_name>
。
这些 VNN 范围的共享也传播到所有辅助副本。
在包含 FILESTREAM 或 FileTable 数据的数据库属于某一 AlwaysOn 可用性组时:
FILESTREAM 和 FileTable 函数接受或返回虚拟网络名称 (VNN),而非计算机名称。 有关这些函数的详细信息,请参阅 FILESTREAM 和 FileTable 函数 (Transact-SQL)。
通过文件系统 API 对 FILESTREAM 或 FileTable 数据进行的所有访问都应该使用 VNN,而非计算机名称。
在该数据库是某一可用性组的一部分时,如果您的应用程序尝试使用格式为 \\<computer_name>\<filestream_share_name>
的计算机名称访问该共享,将会引发错误。
在该数据库不是某一可用性组的一部分时,如果您的应用程序尝试使用 VNN 范围的路径访问该共享,则该请求可能会成功。 在此情况下,虚拟网络名称将解析为计算机名称。 但是,强烈不推荐这一用法,因为如果删除该可用性组,该 VNN 范围的路径会停止。