2011-02-13 15 views
1

私はElmahとLog4Net(ADONetAppender付き)の両方を使用しています。しかし、私はそれらのログをクリアするとゼロにリセットされないテーブルIDキー(インクリメント番号)を持っていることに気付きました。彼らはどこからこのID値を取得していますか?また、log4netカラムがID値のプライマリ・キーを使用しない理由はありますか?それとも、追加すると問題がありますか?IDはどこに保存されていますか?

答えて

1

データベースのIDフィールドのauto incrementディレクティブであると思われます。エントリを削除するとこの値はゼロにリセットされないため、truncanted(訂正してください、わかりません)時のみです。ロガーインフラストラクチャを使用する代わりに、データベース内のテーブルを直接リセットしてみてください。

+0

うーん、興味深い。トランケートと削除の違い私はolのSQL関数として削除を知っていますが、切り捨てを聞いたことはありません。 – Maharaja

+0

を削除すると 'table from delete 'と表示され、テーブル全体をクリアするだけで、ランタイムはO(n)になります。どのように切り詰めが正確に機能するのかはよく分かりませんが、すべてのレコードを削除してから再作成するのではなく、テーブル全体を削除すると想像できると思います。 – Femaref

+0

削除された各レコードをトランザクションログに記録しないので、切り詰めはたいてい効率的です – Amy

1

あなたは、あなたがそうのようなDBCC CHECKIDENT文が使用してIDENTITY列のシードをリセットすることができますのMicrosoft SQL Serverを使用している場合:

DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) 

たとえば、1あなたが希望の値にELMAH_ErrorテーブルのIDENTITYカラムをリセットするには使用:

DBCC CHECKIDENT (ELMAH_Error, RESEED, 1) 

ハッピープログラミング!

関連する問題