1

バックエンドとして SQL Server Express を使用し、ASP Net で C# を介してレコードを挿入します。表に。他のレコードが同じテーブルに保存されている間に、いくつかのレコードしか保存されていないことがわかりました。自動 ID 列が 1,2,3,5,8,9,10,13 などのように見えるとします。ID シードを正しく指定しました。また、アプリケーションはエラーをスローしません。

レコードの挿入中にテーブルロックを使用していないことに注意してください。テーブルロックを使用する必要がありますか、または何が問題になる可能性がありますか

この点についての洞察をいただければ幸いです。

ありがとう

4

2 に答える 2

1

テーブル内のレコードは、順序どおりであるとは限りません。クエリを実行してみてください:

select *
from t
order by <auto-identity column>

また、レコードを削除すると、主キーに穴ができます。

于 2013-02-07T03:17:35.173 に答える
0

あなたの問題 (実際には問題ではありません) は、ロックとは関係ありません。

最も考えられる理由は、レコードの削除です。レコードが削除されると、新しいレコードが追加されても ID のギャップは埋められません。

また、テーブルにレコードを追加するクエリでIDENTITY_INSERT ONを使用することもできます。これにより、ID 列に値を挿入できます。

ORDER BYまた、句で指定されていない限り、クエリ結果は ID 列で並べ替えられません。

とにかく、何か問題があると思われる場合は、トレースを実行SQL Server Profilerして、サーバーで何が起こっているかを確認できます。

于 2013-02-07T04:33:02.483 に答える