Date: Tue, 15 Jan 2002 18:17:49 +0900
From: "Akira Horikawa" <who@example.ne.jp>
堀川です
-----Original Message-----
From: Tadashi Nakamura [mailto:who@example.com]
Sent: Tuesday, January 15, 2002 5:36 PM
To: who@example.ne.jp
Subject: [ml-msde-beg:00014] Re: Primary Key の Numbering
>この欠番を MSDE が、割り当ててきます。従って、select 文で
>リストを表示させると、Identity 列が、昇順にならずに、
>大小の変化をしています
select文のレコード表示で、order by句を付けないと、必ずしも
昇順でレコードが表示されるわけではありません。
見栄えの問題ではありませんか?
>(4) 次に insert 文によってレコードを挿入すると
> (3) で確認した欠番のいくつかが Identity 列として
> 割り当てられています。
delete命令によって削除されたレコードのIdentity値が
再び再利用され、新しいレコードの値に使われたという
ことでしょうか?
SQLServerの仕様では、一度削除されたIdentity値は
再利用されないことになっています。
(truncate tableを実行したら初期化されます)
>実は、私の書いた Script のうち、レコードの訂正の部分が
>妙に複雑な処理になってしまい、一見、正しく動作しているように見え
>るのですが、ほんとはもっと安全な処理をするのではないかと
>気になるのです。
クライアント側でどんなにおかしなプログラム、誤っている
プログラムを動かしたところでも、データベースサーバー
としての基本的な仕様動作に影響を与えることはありえません。
またそのようなことは絶対に起こりえないのがデータベース
サーバーとしての信頼性です。
もちろん、データベースサーバーのソフト的なバグがあれば話
は違いますが、サーバー側の問題だという確認はされましたか?
例えば、IDentity値が再利用されたと見えたのは、どのような
クライアント側ソフトでしょうか?
自作のVBプログラムやAccessプログラムの場合はオブジェクトを
使ってデータベース操作をしています。
オブジェクトが管理しているクライアント側のメモリが壊れたら
サーバーがおかしな動作をしていると思いますね
でも、サーバー側の問題ではなく、クライアント側の問題です。
問題の所在が、クライアント側なのか、サーバー側なのか
はっきりと切り分けしなければいけません。
サーバー側でどのようなSQL文が実行されたのかモニタリング
することもできます(Enterprise Managerが必要)。
そのときのSQL文を調べ、クエリアナライザ(またはOSQLコマンド)
で再現できるかどうか調べるのも有効な方法です。
例えばTransact-SQL言語レベルで、再現できるスクリプトがあれば、
ほんとに私のところでも再現できるかどうか調べられます。
問題の切り分けをされた方がよいでしょう。
---------------------------------------------------
(株)日本技術ソフト開発 堀川 明
mailto:who@example.ne.jp
http://www.horikawa.ne.jp/msde/
01月15日(火曜日) 18時16分記
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|