現象
元々、SQL Server 2014上で稼働していたDBを新サーバーのSQL Server 2022に移行して、Access2022よりリンクして環境を構築した際に発生。
SQL Server側はmoney型で、Accessのフォームより該当フィールドに入力して保存すると、money型のフィールドは全て消え競合エラーが発生、以後編集できなくなる。
SSMSから該当レコードを見てみると値は入っているが、Access側のフォームもテーブルもmoney型フィールドは空白。
全く原因不明
レコードロックされているのか、Access側から変更を試みると数十秒ストールして競合エラーが起こる。
SSMS側からの閲覧・変更は可能だったので、SSMS側からmoney型フィールドの値をとりあえず0変更すると、Access側からも正常に表示・変更出来るようになった。
しかし、新規レコード作成時にはまた同じ現象となる。
色々と調べた結果
money型は日本ではあまり一般的では無いらしい。
金額に小数点以下は使用しないのでint型で充分かと思い、int型に変更してみた。
すると何故か、問題が発生しなくなってしまった。
原因も何もさっぱり判らず仕舞いだが、正常に運用出来ているのでこれでよしとしました。
時間があったら・・・
int型をmoney型に戻してみたり(必要性ゼロですが)新規テーブルでmoney型を作った場合どうなるのか等を検証出来ればと思っています。