19

最近、AccessデータベースをSQLサーバーに移行しました。完了すると、使用していたフロントエンドアクセスデータベースを使用してデータベースのテストを開始しました(以前のセットアップでは、フロントエンド用とバックエンド用の2つのアクセスファイルが含まれていました)。ほぼすぐにエラーが発生しました。

あなたと別のユーザーが同時に同じデータを変更しようとしているため、Microsoft AccessDatabaseEngineはプロセスを停止しました。

現在、これらのフロントエンドで複数の人が働いていますが、このメッセージを受け取った時点では、データにアクセスしているのは私だけです。それをテストするための私の一般的なプロセスは、フォームを使用してデータを挿入することでした。次に、データの削除を試みます。データがテーブルに反映されていることはわかっています。また、この情報を表示または編集しようとしているのは私だけであり、ODBC接続を使用してSQLサーバーをフロントエンドに接続しました。提案や助けがあれば大歓迎です。私はこのスレッドを頻繁に監視しますので、あなたが私に尋ねる質問には比較的早く答えられることを期待してください。

4

7 に答える 7

30

この記事では、エラーはビットデータ型によって引き起こされる可能性があることがわかります。

この問題は、SQLServerベースのデータベースのビットデータ型のフィールドが空白のままになっている場合に発生します。Microsoft Accessは、空白のフィールドをNull値を含むフィールドとして解釈し、Jetデータベースエンジンはそれらを解放しません。その結果、レコードはロックされたままになり、削除できなくなります。

SQL Serverからデータを更新するには、常に主キーまたは一意キーが必要であることに注意してください。

于 2013-03-12T17:04:40.557 に答える
2

Compact&RepairDatabaseを使用する

于 2016-09-03T09:02:57.843 に答える
2

ビットフィールドとnull許容フィールドがないにもかかわらず、このエラーが発生していました。DATETIMEフィールドをSMALLDATETIMEに変更すると、エラーが発生しなくなりました。私が考えることができた唯一のことは、Accessが日付を誤って解釈し、他の何かが日付を更新したと思い込ませることでした。これは、AccessがSQLServerとは異なる方法で丸めることができる別のスレッドに関する別のコメントを見たためです。

于 2019-10-25T01:28:37.277 に答える
1

Access 2016をインストールしたところ、accdbからaccess2013テーブルをインポートしようとするとエラーが発生しました。

どうやら2016年のバックエンドエンジンはSQLServerになりました。使用するつもりだったフィールドを削除しましたが、削除しなかったため、Nullでいっぱいになりました。その後は問題ありません。

于 2015-12-10T03:39:52.487 に答える
1

SQLサーバーのテーブルにタイムスタンプフィールドを追加し、アクセスで再リンクしました。これでうまくいきました。また、テーブルで発生していた編集の問題も解決しました。これが他の人々にも役立つことを願っています。テーブルにはすでに主キーフィールドがありますが、明らかにタイムスタンプフィールドも必要です。

于 2020-02-12T00:52:28.107 に答える
0

私も上記のようにこの問題を抱えていましたが、Microsoftリンクが機能しなくなったため、返信を投稿すると思いました。

AccessデータベースのバックエンドをAWSサーバー上のMySQLに移行しましたが、レコードを追加または削除しようとした関連テーブルで、このスレッドのタイトルであるエラーが生成されました。

私にとっての解決策は、タイプが「BIT」であるフィールドを削除することでした。幸い、これはデータベースを再開発する前に使用されていた古いフィールドであり、削除できました。

于 2015-10-21T22:27:09.143 に答える
0

SQLでテーブル列を作成するときは、デフォルト値としてGetDate()を使用しないようにしてください。それで私の問題は解決しました。

于 2017-03-23T14:37:30.960 に答える