私は、Accessデータベースを利用するVB .NETアプリケーションのサポートを引き継いだ。このアプリケーションを作成した開発者は、データベース内のテーブルの主キー列に一意のインデックスを作成していないことがわかりました。したがって、プライマリキーフィールドのどれも実際にアクセスのプライマリキーとしてフラグが立てられていないため、Accessによって重複チェックが実行されていません。さらに、主キー列はAccessのオートナンバー型で自動インクリメントされません。開発者は次のようなクエリを使用してテーブルに行を挿入しています。Accessデータベース(DDL)のバッチ更新。可能?
INSERT INTO Users(pkid、FirstName、Surname、City) SELECT iif(isnull(max(pkid))、0、max(pkid))+1、[@strFirstName]、[@strSurname]、[@strCity]、 FROM Users;
このアプリケーションは、一般にアプリケーションを同時に使用するネットワークアプリケーションとして実行され、すでに述べた設計上の問題と組み合わされているため、複数のユーザーに同じプライマリキー値が割り当てられています。これは==大きな問題です。 :(
私はこれを並べ替える必要があります(私は今週末に何をやっているのでしょうか?)。私はおそらく、アクセス挿入クエリを呼び出すコードの周りにミューテックスを使用すると考えています。しかし、最終的には、データベースを修正して適切なプライマリキー値を設定したいと思っていますが、アプリケーションは現在約15の異なるサイトで動作していますので、何らかのバッチを実行する必要があります
私はアクセスに精通していません(これは初めて私がアクセスを使用しています)。これは少しの質問ではありますが、申し訳ありませんが、私はすぐに解決策が必要です。私がよく知っているSybaseまたはMSSqlデータベースでこの問題が発生した場合、SQLバッチを作成します。データベースを修正するために必要なDDLコマンドだから問題は、Accessでバッチファイルから起動できるSQLスクリプトを作成することが可能なのでしょうか?そうでない場合、それぞれのデータベースを更新する異なるサイトで実行可能な「パッチ」を作成するにはどうすればよいでしょうか。
ありがとう、Remou。私はこの道を行く。 – BruceHill