Null許容のbit型のカラムが存在しない場合のデータ競合エラーの原因と解消方法

Accessの単票画面+AccessからSQL Serverへのリンクテーブルの構成で、
マスタメンテナンス画面を作成していたのですが、とあるテーブルの単票画面から更新しようとすると、以下のデータ競合エラーがでて全くデータ更新できない状態となりました。


f:id:katharsis1721:20200417004850p:plain


エラーメッセージから検索すると、以下のURLがヒットするのですが、
いずれのURLにもテーブルのカラムにNull許容のbit型が存在することをが原因と記載されています。

asbepartners.com

social.msdn.microsoft.com

ところが、このエラーがでるテーブルにNull許容のbit型のカラムが存在しないため、
もう少し調べてみると、以下のURLがヒットし、こちらが原因でした。

osada113.blog94.fc2.com

よくテーブルのレコード作成日時やレコード更新日時のカラムでミリ秒まで保持しているケースがありますが、datetime型がミリ秒まで保持しているカラムが存在する場合でも、必ずこのデータ競合エラーが発生します。
以下のSQLでミリ秒を切捨てするデータ更新することで、このエラーは解消されました。

update [dbo].[M_Table]
set [CreateDatetime] = CONVERT(DATETIME,CONVERT(VARCHAR(24),[CreateDatetime],20)),
[UpdateDatetime] = CONVERT(DATETIME,CONVERT(VARCHAR(24),[UpdateDatetime],20))


Accessの日付/時刻型は、秒単位までしか扱えず、ミリ秒まで保持できないようです。

hatenachips.blog.fc2.com