症状
假定您启用 Microsoft SQL Server 2014年的实例中的 AlwaysOn 可用性组。而主副本有活动的事务,您可以执行可用性组的故障转移。然后,您会收到以下 3303 警告消息︰
事务的加强远程 %。 * ls' (ID 0x%016i64x %ls) 启动数据库 %1 ! '' LSN %3 在失败中的 %1。
在此情况下,以下数据驱动程序或提供程序不能捕获"远程强化失败"异常︰
-
SQL Server 4.0 Microsoft JDBC 驱动程序
-
用于 SQL Server 的 OLE DB 驱动程序
-
SQL Server 本机 OLE DB 客户端
因此,使用这些驱动程序或提供程序的客户端应用程序不知道交易是"不确定。""不确定"事务意味着它可能已提交并强化成功,磁盘或终止,并由 SQL Server 回滚。如果此"置疑"事务被回滚,这些驱动程序或提供程序可能仍然认为该交易记录为已成功提交,因为它们不能捕获该异常。这可能导致应用程序的数据不一致问题。
注意:下列连接提供程序可以捕获异常"远程强化失败"为"不确定"的交易记录︰
-
SQL Server 的 Microsoft ODBC 驱动程序
-
SQL Server 本机客户端 (ODBC)
解决方案
第一次 SQL Server 以下累积更新中修复此问题。
对于 SQL Server 2014年累积更新 5/en-us/help/3011055
修补程序信息此修补程序引入了一个新的跟踪标志 3923。跟踪标志将使 SQL Server 引发 3303 警告消息时引发应用程序异常。
应用此修复程序后,您必须启用此跟踪标志,以解决此问题。使用此修复程序和跟踪标志,应用程序还需要实现验证代码,以检查是否回滚或之后捕获该异常,则提交事务。
可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。
如果此修复程序可供下载,则在此知识库文章顶部"提供修补程序下载"部分。如果未显示此部分,将申请提交到 Microsoft 客户服务和支持,以获取此修复程序。
注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰
http://support.microsoft.com/contactus/?ws=support注意:"修补程序下载可用"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。
重启要求应用此修补程序后,不需要重新启动计算机。
状态
Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。