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)

現象

テーブルで Change Data Capture (CDC) 機能を有効にして、Microsoft SQL Server でログ スキャンを実行するとします。  pollinginterval パラメーターは、sys.sp_cdc_scan ストアド プロシージャで秒 (s) から時間 (h) に変換されます。 ただし、 pollinginterval パラメーターが 1 時間 (>3600 秒) より大きい場合、変換後の結果は正しくないことがわかります。

注

@pollinginterval bigint, @seconds bigint, @minutes bigint, @hours bigint を宣言する
  set @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 の累積的な更新プログラムで修正されています。

SQL Server 2017 の累積的な更新プログラム 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 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。