KB4459220 - 修复:在 SQL Server 中将“pollinginterval”参数从秒转换为 sys.sp_cdc_scan数小时时,结果不正确

应用对象
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 on Windows (all editions)

症状

假设你在表上启用“更改数据记录 (CDC) ”功能,以便在Microsoft SQL Server中运行日志扫描。  pollinginterval 参数在sys.sp_cdc_scan存储过程中从秒 () 转换为小时 (小时) 。 但是,当 轮询interval 参数大于一小时 (>3600 秒) 时,你会注意到转换后的结果不正确。

注意

declare @pollinginterval bigint、 @seconds bigint、 @minutes bigint、 @hours bigint
  set @pollinginterval = 3600
  select @seconds = @pollinginterval % 60
  select @minutes = ( (@pollinginterval - @seconds) / 60) % 60
  select @hours = (@pollinginterval - (@minutes * 60) - @seconds) / 60
---下一次尝试换行
--- select @hours = (@pollinginterval - (@minutes * 60) - @seconds) / 60 /60
  选择 @hours、 @minutes、 @seconds

解决方法

此问题在以下SQL Server累积更新中已修复:

2017 SQL Server累积更新 12

SQL Server 2016 SP2 的累积更新 3

SQL Server 2016 SP1 的累积更新 12

SQL Server 2014 SP3 的累积更新 1

SQL Server 2014 SP2 的累积更新 14

关于SQL Server的累积更新:

SQL Server的每个新累积更新都包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新累积更新:

SQL Server 2017 的最新累计更新

SQL Server 2016 年的最新累积更新

SQL Server 2014 年的最新累积更新

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

参考资料

了解 Microsoft 用于描述软件更新的术语