中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

DBCC CHECKIDENT RESEEDはいつも同じとは限らない(SQL Server 2000 or 2005)

UnitTest用にDBの枠組みから毎度毎度作り上げるようにしているのですが、そうそうCreate Databaseからやっているときりが無いので、1回のテストの流れではDatabaseの作成は1回にとどめています。

その分テストの1回ごとに元の状態に戻してやる必要があります。

IdentityがSQL Serverの特徴ですので、基本的にはIdentity列を使うことにしているのですが、これの初期化にはDBCC CHECKIDENT を使います。

ただしこれ1度もテーブルにInsertされていない場合と、InsertしてからDeleteして再設定するときでは動きが違います。

CREATE TABLE [#Table_1](
  [ident] [int] IDENTITY(3,1) NOT NULL,
  [val] [nchar](10) COLLATE Japanese_CI_AS NULL
 ) ON [PRIMARY]
 
 --いきなりCHECKIDENT
 DBCC CHECKIDENT ('#table_1', reseed, 1)
 insert into [#table_1](val) values('めいしょう')
 insert into [#table_1](val) values('めいしょう')
 select * from #table_1
 
 --一度データを設定したものを削除して最INSERT
 delete [#table_1]
 DBCC CHECKIDENT ('#table_1', reseed, 1)
 insert into [#table_1](val) values('めいしょう')
 insert into [#table_1](val) values('めいしょう')
 select * from #table_1
 
 drop table [#table_1]

DBCCからINSERTしてSELECTの流れはまったく一緒のSQLですが、結果はまったく違います。

1 めいしょう 
2 めいしょう 

2 めいしょう 
3 めいしょう 

このように結果が違います。

なにもINSERTしない状態ではDBCCした直後にはそのDBCCで設定した値がそのまま使われますが、1度でもINSERTしていると1の次の値の2から利用されます。

DBCC CHECKIDENT の仕様を見る限り最大値を設定しますとのことなので、最初の動きがおかしいのは明白ですが、これはIdentity Seedが一度も設定されていないからnullに成っているのが原因と思われます。

でもnullは設定できないので不公平です。

こんなのおかしいよと思う人が1人でもいれば、MSDN Product Feedback にKatmai用にWishをあげたいと思います。どうでしょ?

#でもnullの時の動きが変わるとそれはそれで困るかもしれないんですがね~

単体テストする場合には事前に、またはCreateDatabaseするときに、一度ダミー行をINSERTして、Deleteしてまわって、DBCC CHECKIDENTしてまわるようにするといいと思います。

 

投稿日時 : 2005年10月10日 21:32

コメントを追加

# van cleef and arpels bracelet faux 2017/11/12 8:50 defzklpawefsztmzlvacw@hotmal.com

What does a “literal piece of G-d” mean?

# fzsmLkzhztNXga 2021/07/03 2:31 https://amzn.to/365xyVY

Totally agree with you, about a week ago wrote about the same in my blog..!

# TzTLGnGQGacj 2021/07/03 4:01 https://www.blogger.com/profile/060647091882378654

properly, incorporating a lot more colours on your everyday life.

# Illikebuisse bozoo 2021/07/04 16:13 www.pharmaceptica.com

tadalafil brands https://pharmaceptica.com/

# re: DBCC CHECKIDENT RESEED????????????(SQL Server 2000 or 2005) 2021/07/18 12:51 hydroxychoroquine

is chloroquine over the counter https://chloroquineorigin.com/# hydroxychloroquine cures

# xthqdyankbse 2021/11/28 10:09 dwedayqpxe

https://chloroquinervn.com/

# pxidgpruujkg 2022/05/08 7:11 cbnkho

what is hydroxychloroquine prescribed for https://keys-chloroquinehydro.com/

# generic aralen 250mg 2022/12/31 1:45 MorrisReaks

http://www.hydroxychloroquinex.com/ generic hydroxychloroquine otc

# doors2.txt;1 2023/03/14 14:55 PGSahnSxxrpxqpPmW

doors2.txt;1

タイトル
名前
URL
コメント