适用于:Windows 上的 SQL Server
AlwaysOn 可用性组是预定义的 SQL Server 关系数据库集合;当有条件触发任一个数据库进行故障转移时,这些数据库将执行集体故障转移,使请求重定向到同一可用性组中其他实例上的镜像数据库。 如果将可用性组用作高可用性解决方案,您可以将该组中的数据库用作 Analysis Services 表格或多维解决方案中的数据源。 使用可用性数据库时,以下所有 Analysis Services 操作都能按预期工作:处理或导入数据、直接查询关系数据(使用 ROLAP 存储或 DirectQuery 模式)以及写回。
处理和查询属于只读工作负荷。 您可以通过将这些工作负载卸载到可读辅助副本来提高性能。 在这种情况下,需要进行额外配置。 请使用本主题中的核对清单来确保遵循所有步骤。
先决条件
您必须具有针对所有副本的 SQL Server 登录名。 必须具有 sysadmin 权限才能配置可用性组、侦听器和数据库;但用户只需要 db_datareader 权限即可从 Analysis Services 客户端访问数据库。
请使用支持表格数据流 (TDS) 协议版本 7.4 或更高版本的数据提供程序,例如 SQL Server Native Client 11.0 或 .NET Framework 4.02 中的 SQL Server 数据提供程序。
(仅限只读工作负荷)。 必须将辅助副本角色配置为支持只读连接,可用性组必须配置路由列表,并且 Analysis Services 数据源中的连接必须指定可用性组侦听器。 本主题中提供了相关说明。
核对清单:使用辅助副本执行只读操作
除非您的 Analysis Services 解决方案包含写回功能,否则您可以将数据源连接配置为使用可读辅助副本。 如果您的网络连接速度很快,那么辅助副本的数据滞后时间很短,可提供与主副本几乎相同的数据。 通过将辅助副本用于 Analysis Services 操作,您可以减少主副本上的读写争用,并提高可用性组中辅助副本的利用率。
默认情况下,允许对主副本进行读写和读意向访问,同时不允许连接辅助副本。 需要进行额外配置,才能建立与辅助副本的只读客户端连接。 配置要求对辅助副本设置属性,并运行定义只读路由列表的 T-SQL 脚本。 请使用以下过程来确保已执行以上两个步骤。
注意
以下步骤假定存在 AlwaysOn 可用性组和数据库。 如果要配置新组,请使用“新建可用性组向导”创建该组并联接数据库。 该向导检查先决条件,为每一步提供指导,并执行初始同步。 有关详细信息,请参阅 使用可用性组向导 (SQL Server Management Studio)。
第 1 步:配置对可用性副本的访问
在对象资源管理器中,连接到承载主副本的服务器实例,然后展开服务器树。
注意
这些步骤摘自配置对可用性副本的只读访问 (SQL Server),其中提供了有关执行此任务的更多信息和替代说明。
展开Always On 高可用性节点和可用性组节点。
单击要更改副本的可用性组。 展开 可用性副本。
右键单击次要副本,然后单击“属性”。
在 “可用性副本属性” 对话框中,更改辅助角色的连接访问设置,如下所示:
在可读辅助副本下拉列表中,选择仅限读取意向。
在 “主角色中的连接” 下拉列表中,选择 “允许所有连接”。 这是默认值。
或者,在 “可用性模式” 下拉列表中,选择 “同步提交”。 此步骤不是必需的,但进行此设置可确保主副本与辅助副本之间的数据一致性。
该属性也是计划故障转移的要求之一。 如果要出于测试目的执行计划的手动故障转移,请分别将主副本和辅助副本的 “可用性模式” 设置为 “同步提交”。
第 2 步:配置只读路由
连接到主副本。
注意
这些步骤摘自 为可用性组配置只读路由 (SQL Server),其中提供了有关执行此任务的更多信息和替代说明。
打开一个查询窗口,在其中粘贴以下脚本。 此脚本执行三项操作:启用对辅助副本的可读连接(默认禁用该连接)、设置只读路由 URL,以及创建确定连接请求的定向先后顺序的路由列表。 如果已经在 Management Studio中设置了属性,则第一个语句(用于允许可读连接)是多余的,但为完整起见仍包括在该脚本中。
ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER01' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER01' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433')); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER02' WITH (SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER02' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433')); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER01' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01'))); ALTER AVAILABILITY GROUP [AG1] MODIFY REPLICA ON N'COMPUTER02' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02'))); GO修改该脚本,用对您的部署有效的值取代占位符:
用承载主副本的服务器实例的名称取代“Computer01”。
用承载辅助副本的服务器实例的名称取代“Computer02”。
用所在域的名称取代“contoso.com”;如果所有计算机都位于相同的域中,则可在该脚本中省略该域。 如果侦听器使用的是默认端口,可保留该端口号。 侦听器实际使用的端口列在 Management Studio的属性页中。
执行该脚本。
接下来,在使用你刚刚配置的组中的某个数据库的 Analysis Services 模型中创建一个数据源。
使用 AlwaysOn 可用性数据库创建 Analysis Services 数据源
本节说明如何创建连接到可用性组中的数据库的 Analysis Services 数据源。 您可以使用这些说明来配置与主副本(默认)的连接,或配置与基于上一节中的步骤配置的可读辅助副本的连接。 AlwaysOn 配置设置连同在客户端中设置的连接属性将共同决定是使用主要副本还是次要副本。
在 SQL Server Data Tools 的 Analysis Services 多维和数据挖掘模型项目中,右键单击“数据源”并选择“新建数据源”。 单击 “新建” 创建新的数据源。
或者,对于表格模型项目,单击“模型”菜单,然后单击 “从数据源导入”。
在连接管理器中,在“提供程序”中,选择支持表格数据流 (TDS) 协议的提供程序。 SQL Server Native Client 11.0 支持此协议。
在连接管理器的“服务器名称”中,输入“可用性组侦听器” 的名称,然后选择该组中可用的数据库。
可用性组侦听器将客户端连接重定向到主副本以处理读写请求,或重定向到辅助副本(如果在连接字符串中指定了读意向)。 由于副本角色会在故障转移期间发生变化(此时主副本会变为辅助副本,而辅助副本会变为主副本),因此您应始终指定侦听器,以便将客户端连接相应地重定向。
要确定可用性组侦听程序的名称,可以询问数据库管理员,或连接到可用性组中的某个实例并查看其 AlwaysOn 可用性配置。
还是在连接管理器中,单击左侧导航窗格中的 “全部” ,查看数据访问接口的属性网格。
如果要将客户端与次要副本配置为只读连接,请将 应用程序意向 设置为 READONLY。 否则,保持默认设置 READWRITE ,将连接重定向到主副本。
在“模拟信息”中,选择“使用特定 Windows 用户名和密码”,然后输入对数据库至少具有 db_datareader 权限的 Windows 域用户帐户。
不要选择 “使用当前用户的凭据” 或 “继承”。 您可以选择 “使用服务帐户”,但前提是该帐户对数据库具有读权限。
完成数据源配置并关闭数据源向导。
向连接字符串添加 MultiSubnetFailover=Yes ,以便更快地检测和连接到活动服务器。 有关此属性的详细信息,请参阅高可用性和灾难恢复的 SQL Server Native Client Support。
此属性不显示在属性网格中。 要添加该属性,请右键单击数据源并选择“查看代码”。 将
MultiSubnetFailover=Yes添加到连接字符串。
现在已经定义了数据源。 接下来可以构建模型,可以从数据源视图入手;如果是表格模型,则可以创建关系。 在您需要从可用性数据库中检索数据时(例如在您准备处理或部署解决方案时),您可以测试配置以验证是否从辅助副本检索数据。
测试配置
在 Analysis Services 中配置了辅助副本并创建了数据源连接后,您可以确认处理和查询命令是否重定向到辅助副本。 还可以执行计划的手动故障转移,以验证适用于此应用场景的恢复计划。
第 1 步:确认数据源连接重定向到辅助副本
启动 SQL Server Profiler 并连接到承载辅助副本的 SQL Server 实例。
当跟踪运行时, SQL:BatchStarting 和 SQL:BatchCompleting 事件将显示从数据库引擎实例上执行的 Analysis Services 中发出的查询。 这些事件已默认选定,您只需启动跟踪即可。
在 SQL Server Data Tools中,打开 Analysis Services 项目或包含要测试的数据源连接的解决方案。 请确保数据源指定的是可用性组侦听器,而不是该组中的某个实例。
此步骤非常重要, 如果指定服务器实例名称,则不会路由到辅助副本。
排列应用程序窗口,使 SQL Server Profiler 和 SQL Server Data Tools 并排显示。
部署该解决方案,并在部署完成后停止跟踪。
在跟踪窗口中,您应能看到来自应用程序 Microsoft SQL Server Analysis Services的事件。 应能看到从承载辅助副本的服务器实例上的数据库中检索数据的 SELECT 语句,证明是通过该侦听器连接到辅助副本。
第 2 步:执行计划的故障转移以测试配置
在 Management Studio 中,检查主副本和辅助副本,确保两个副本均配置为同步提交模式并且当前保持同步。
以下步骤假定将辅助副本配置为同步提交。
要验证同步,请打开与托管主要副本和次要副本的每个实例的连接,展开“数据库”文件夹,确保每个副本中的数据库名称旁边均附有“(已同步)”和“(正在同步)”。
注意
这些步骤摘自 执行可用性组的计划手动故障转移 (SQL Server),其中提供了执行此任务的更多信息和替代说明。
在 SQL Server Profiler 中,为每个副本启动跟踪,并排查看这些跟踪。 在以下步骤中,您将比较这些跟踪,确认 Analysis Services 用于处理或查询的 SQL 查询会从一个副本切换到另一个副本。
从 Analysis Services 内部执行处理或查询命令。 由于您已将数据源配置为只读连接,所以应能看到在辅助副本上执行该命令。
在 Management Studio 中,连接到辅助副本。
展开Always On 高可用性节点和可用性组节点。
右键单击要进行故障转移的可用性组,然后选择 Failover 命令。 这将启动故障转移可用性组向导。 使用该向导选择要将哪一副本用作新的主副本。
确认故障转移已成功:
在 Management Studio 中,展开可用性组以查看“(primary)”和“(secondary)”标识。 以前充当主副本的实例现在应该变为辅助副本。
查看仪表板,确认是否检测到任何运行状况问题。 右键单击可用性组,然后选择“显示面板”。
花一两分钟的时间等待故障转移在后端完成。
在 Analysis Services 解决方案中再次执行处理命令或查询命令,然后在 SQL Server Profiler 中并排查看这些跟踪。 您应当会在另一个实例上看到处理正在进行的迹象,该实例现已成为新的次要副本。
发生故障转移后会发生什么
在故障转移期间,辅助副本会切换为主角色,而原主副本会切换为辅助角色。 所有客户端连接都已终止,可用性组侦听器的所有权随主副本角色移至新的 SQL Server 实例,并且该侦听器终结点绑定到新实例的虚拟 IP 地址和 TCP 端口。 有关详细信息,请参阅 关于客户端连接对可用性副本的访问 (SQL Server)。
如果在处理过程中发生故障转移,Analysis Services 会在日志文件或输出窗口中记录以下错误:“OLE DB 错误: OLE DB 或 ODBC 错误: 通信链接失败; 08S01; TCP 提供程序: 现有连接已被远程主机强行关闭。” ; 08S01。”
稍等片刻然后重试,该错误应自行解决。 如果为可读辅助副本正确配置了可用性组,那么在您重试处理后,处理将在新的辅助副本上继续执行。
若错误反复出现,则很可能是因为配置有误。 您可以尝试重新运行 T-SQL 脚本,以解决辅助副本上可能存在的路由列表、只读路由 URL 和读意向问题。 还应验证主副本允许所有连接。
在使用 Always On 可用性数据库时进行写回
写回是 Analysis Services 中用来支持 Excel 中的假设分析的一项功能。 该功能还常用于自定义应用程序中的预算和预测任务。
要支持写回功能,需要 READWRITE 客户端连接。 在 Excel 中,如果尝试写回只读连接,将发生以下错误:“无法从外部数据源检索数据。
如果您已将某个连接配置为始终访问可读辅助副本,则现在必须新建一个连接,使其使用到主副本的 READWRITE 连接。
为此,应该在 Analysis Services 模型中另外创建一个数据源,以便支持读写连接。 创建另一个数据源时,请使用你在只读连接中指定的相同的侦听器名称和数据库,但应保留支持 READWRITE 连接的默认设置,而不要修改“应用程序意向”。 您现在可以向基于读写数据源的数据源视图添加新的事实表或维度表,然后针对新表启用写回功能。