1

SQL Server バージョン 2000。

MSSQL Server と通信するデスクトップが多数あります。特定のレコードを検索する場合、正しいデータを返すデスクトップと返さないデスクトップがあります。

SQL コマンドは "SELECT * FROM PODORDH WHERE ([NO]=6141)" です。1 つまたは 2 つのデスクトップで、これはレコードを返します。サーバーおよび他のすべてのデスクトップでは、レコードは返されません。

どの領域を確認する必要がありますか? これが起こる原因は何ですか?

4

6 に答える 6

4

このエラーは、トランザクション内でそのレコードを削除/挿入したが、そのトランザクションをまだコミットしていないユーザーが原因である可能性があります。

于 2008-09-17T13:45:34.973 に答える
3

各マシンで接続しているデータベースとサーバーを確認してください。クエリは単純なので、異なるデータベースまたはサーバーに接続している場合を除き、どこでも同じ答えを得る必要があります。

于 2008-09-17T13:42:58.270 に答える
2

行を返すのが1つのワークステーションだけの場合、そのワークステーションにはコミットされていないオープントランザクションがあるように聞こえます。

それ以外の場合は、ワークステーションごとに分離レベルが異なる可能性があります。コミットされていないデータが表示されるものと表示されないものがありますか?

于 2008-09-17T13:48:38.773 に答える
2

各マシンから別のユーザーとしてサーバーに接続している場合は、選択しているテーブルの権限を確認することをお勧めします。

一部のユーザーがそのテーブルを読み取るアクセス権を持っているが、他のユーザーはアクセスできない場合、説明した結果が得られる可能性があります。

于 2008-09-17T13:50:18.567 に答える
1

上記のすべてのオプションを使い果たした後、行とテーブルのロックを調べます。この場合、ロックが発生したことを示すエラーを返す必要があります。エラーを飲み込む可能性のあるアプリケーションを実行していますか?

于 2008-09-17T16:29:30.710 に答える
0

おそらく、レコードを見つけた 1 人か 2 人のユーザーが別のスキーマ名を使用しているため、別のテーブルを使用している可能性があります。IE では、ほとんどのユーザーが dbo.PODORDH を使用していますが、1 人または 2 人のユーザーが otheruser.PODORDH を使用しています。

于 2008-09-17T13:57:25.990 に答える