ある日突然、Microsoft365のAccessだけエラー発生
本当に突然の出来事です。
ココがダメ
Microsoft365のAccessだけSqlServerに接続できない!
という不可解な現象です。
サブスクではないAccess2019のパソコンでは問題なくSqlServerに接続でき、いつものように作業ができていました。
ということは、WindowsUpdateやOfficeUpdateによる嫌がらせだという事はスグに推測できました。
しかし、サブスクのMicrosoft365でエラーを吐き出させるってのは何なの???本当にマイクロソフトに嫌気がさします。
ネット検索すると同じようなケースがありましたが、解決策が書いてない・・・残念
(対応1)名前を付けて保存によるバージョン変更
とりあえず、mdbの拡張子だったので、accdbへの最新に「名前を付けて保存」することにしました。
ココがダメ
既に使用されているので、使用できませんでした。だと???
訳がわかりません。
システムWikiに、同じような事例と解決方法があり、やってみました。
この解決方法も、理由は不明だが、ネットワークドライブにファイルを置いてやれば保存ができるというものでしたがやってみると、確かに保存ができました。
が、しかし、ファイルが壊れていてまともに動きませんでした。
空のデータベースにインポートする方法も試しましたが無駄に終わりました。
(対応2)日付/時刻型のデータ型変更
ネット上では、テーブルに、日付/時刻型が2つ以上あるとエラーになるので、SqlServerのデータ型を、 datetime から smalldatetime に変更すれが改善されるとか・・・
確かに、テーブル構造をみると、エラーが出ている方は、日付/時刻型のフィールドが2つ以上ありました。
でも、いきなりデータ型を変更するって事は、システム全体の変更が生じる可能があるのでリスクが大きすぎます。
リスクが大きいので、この対応はやりませんでした。
(解決)SQLServer用のODBCドライバー17に変更
ココに注意
ある特定のテーブルだけ#Deleted現象がでていたのでドライバーを疑うまで時間がかかってしまいました。
すばり、この上のサイトに記載されている対応で解決しました。
- SQL Server –この問題の影響を受ける
- SQLServer用のODBCドライバー17–この問題の影響を受けません
DRIVERを、「SQL Server」から「ODBC Driver 17 for SQL Server」に変更しました。
新しいのは、ODBC Driver 18 for SQL Serverのようですが、17の方を当てがってみました。
自分の場合は、VBAにて、テーブルとパススルークエリのドライバー設定をしているので、VBAの一部を、
ODBC:DRIVER=SQL Server
ODBC:DRIVER={ODBC Driver 17 for SQL Server}
に置換するだけでドライバーの変更が終わりました。
【Access】データベースの違うODBCリンクテーブルを一括に変更する方法
SqlServerに接続するODBCデータソース(DSN)は設定しなくても直接接続できる方法の違いが分かった!
いきなりエラーは酷すぎるよ!
過去にもWindowsUpdateで色々と意地悪されて泣かされていますが、致命的なエラーがでるような変更は本当にこまります。
更新前に戻す方法などもあるようですが、メンドクサイし、過去には戻しても回復しなかったようなケースもありました。
マイクロソフトに文句を言っても相手にされないので行動は起こしませんが、いつもいつも問題いが起きる度に本当に迷惑しています。
ただ、マイクロソフトのソフトも便利な面が多くて使いやすいのは認めていますので大きな声ではクレームは言えません。