• No : 32288
  • 公開日時 : 2020/09/24 14:32
  • 印刷

【DataSpider Servista】SQLServer の [テーブル書き込み] で DATETIME 型を主キーとして実行した際、想定通りの動作とならない。

SQLServer の [テーブル書き込み] で DATETIME 型を主キーとして実行した際、想定通りの動作となりません。
対応策を教えてください。
カテゴリー : 

回答

■原因
 事象の原因としては Microsoft SQL Server 側の DATETIME 型の互換性が考えられます。
 
■想定される対応策
  1. [テーブル書き込み]ではなく、[更新系SQL実行]を使用して、ヘルプに記載されている下記の回避策を実施していただくことをご検討下さい。
----
  • DATETIME型
WHERE句にSQLパラメータを使用していて、ミリ秒まであるDATETIME型の値を代入する場合、比較演算子などで正確に判定されません。
ただし、この事象は、Mapperで値を"yyyy-MM-dd HH:mm:ss.SSS"形式の文字列に変換し、SQLパラメータの型をVARCHAR型へ変更することで回避できます。
----
 
  1. 接続先 SQL Server の互換性レベルを 120 以下に設定することをご検討ください。
 
■補足
 SQL Server 2016 以降では、DATETIME 型の精度についての扱いが変更されているかと存じます。
 
 SQLServer 側で暗黙的に行われる datetime データ型から datetime2 データ型への変換がデータベース互換性レベル 130 の環境では精度が上がることで結果的に異なる変換値が生成されるとのことです。
 ※詳細については SQLServer 側にご確認下さい。
 
■今後の対応
 本件につきまして、今後のバージョンでヘルプの仕様制限等に記載する対応を検討してまいります。
 ※対応時期については未定となります。(2020/7/1 現在)
 
Version Information
Ver.4.2、Ver.4.1
目的別で検索
トラブルシューティング