KB4459220 - 修正:當你將「pollinginterval」參數從秒轉換為小時,sys.sp_cdc_scan 在 SQL Server 中轉換時,會出現錯誤結果

套用到
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)

症狀

假設你在資料表上啟用變更資料Capture (CDC) 功能,可以在SQL Server中執行日誌掃描Microsoft。  輪詢間隔參數在sys.sp_cdc_scan儲存程序中,從秒 (秒) 轉換為小時 (小時) 。 然而,當 輪詢間隔 參數超過一小時 (>3600秒) 時,你會發現轉換後的結果是錯誤的。

注意

宣布 @pollinginterval 大比金, @seconds 比金, @minutes 比金, @hours 比金
  集合 @pollinginterval = 3600
  選擇 @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 的累積更新中得到修正:

Cumulative Update 12 for SQL Server 2017

Cumulative Update 3 for SQL Server 2016 SP2

Cumulative Update 12 for SQL Server 2016 SP1

Cumulative Update 1 for SQL Server 2014 SP3

累積更新14 for SQL Server 2014 SP2

關於 SQL Server 的累積更新:

每次新的 SQL Server 累積更新都包含了之前累積更新中包含的所有熱修補與安全修補。 請查看 SQL Server 的最新累積更新:

SQL Server 2017 最新累積更新

SQL Server 2016 最新累積更新

SQL Server 2014 最新累積更新

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

參考資料

了解 Microsoft 用來說明軟體更新的術語