0

Microsoft Dynamics GP で問題が発生しており、これが原因かどうかを調査していますが、これは SQL Server へのアクセスの問題である可能性があります。GP はデータを SQL Server に保存し、MS Access を使用してテーブル データにアクセスします。本番データベースで一部のデータが失われているようです。残念ながら、私には公開されていないため、Access で何が行われているのかわかりません。簡単な解決策は、Access の使用を中止してデータがまだ失われているかどうかを確認するように指示することですが、これを提案する前に文書化された問題について知りたいと思います。

では、何が起こっているのかを推測するために、Access がバックエンドとして SQL Server に接続されている場合、Access は何をするのでしょうか? テーブルをロックしますか?データが失われたり削除されたりするために何をしなければなりませんか? アクセスが原因である場合、それを解決するにはどのような手順を実行する必要がありますか?

4

2 に答える 2

3

Access にデータの変更または削除を許可するのはあなたの意図ですか?

そうでない場合、読み取り専用アクセスを許可する Access で使用するためのユーザー ID を設定することを検討しましたか (しゃれは意図されていません)。

いずれにせよ、SQL Server のベスト プラクティスは、ユーザー アカウントがビジネス要件を満たすために必要な最小限のアクセス権を持つようにすることです。パスワードが空白の sa アカウントを全員に与えないでください。

編集:

Access は SQL Server Management Studio のようなものと考えてください。つまり、アカウントに許可されているアクセス許可があれば、事実上無制限にデータベースのクエリと変更を行うことができるインタラクティブなツールです。テーブルをプルアップできるインタラクティブな環境であるため、行の削除は、その行をクリックして削除キーを押すのと同じくらい簡単です。同様に、データ値の変更は、その行と列をクリックして新しい値を入力するのと同じくらい簡単です。

もちろん、何かを削除するのも、誤って削除キーを押すのと同じくらい簡単です。

ユーザーにそのようなツールとアクセス制限のないアカウントを与えると、意図的、偶然、またはその他の理由でデータが変更されることは驚くことではありません.

于 2009-05-22T18:50:40.183 に答える
2

通常、SQL Server データは、ODBC/OLEDB 接続であるリンク テーブルを使用して MSACCESS でアクセスされます。このテクノロジはやや時代遅れであり、完全にバグがないわけではありませんが、基盤となるテクノロジでこれを引き起こしている可能性があるものは何も思いつきません。

通常のユーザーは、SQL Server データベースへの管理者 ID とパスワードを含む ODBC データ ソースまたは接続文字列 (つまり、無制限の権限) を使用してこれらのテーブルにアクセスしていますか? もしそうなら、欠落しているデータは当然のことです。開いている MSACCESS リンク テーブルの行を削除することは、Excel で行を削除するのと同じくらい簡単です。

MSACCESS/SQL 接続でのレコード ロックは、通常楽観的です (変更しない限り)。昔の SQL Server 2000 では、これは、2 人のユーザーが同じレコードを同時に編集した場合、最後に保存した人が (黙って) 勝つことを意味していました。最近では、最後に保存した人は、変更中に他の誰かがレコードを編集したことが通知され、2 つのオプションが提供されます: 私の変更を破棄するか、他の人の変更を上書きします。

いずれにせよ、テーブルへの読み取り専用アクセスを提供すると、多くの胸焼けが軽減されます。

于 2009-05-22T18:58:39.310 に答える