چنانچه سرویس SQL را در MS SQL server 2012 ریست نمایید، VALUE (مقدار)هایی که Identity SPECIFICATION آنها برابر YES باشد جهش پیدا میکنند. این افزایش مقدار، از نقطه نظر برنامه نویسی، به خصوص در زمانی که قصد نمایش دادهها به کاربر وجود دارد، قابل قبول نیست.
برای درک بهتر، این مسئله را با مثالی در ادامه بررسی میکنیم:
ابتدا به کمک Query (دستور)های زیر یک Table ایجاد و مقدار فیلد Id را بصورت Auto Identity Column تنظیم میکنیم، سپس دو سطر داده به آن اضافه کنید.
create table MyTestTable(Id int Identity(1,1), Name varchar(255)); insert into MyTestTable(Name) values ('Mr.Tom'); insert into MyTestTable(Name) values ('Mr.Jackson');
به کمک Select میتوان نتیجه دستورات بالا را بررسی کرد:
SELECT Id, Name FROM MyTestTable;
حال سرویس SQL را ریست کنید:
به کمک دستورات زیر دو سطر جدید به Table اضافه کنید:
insert into MyTestTable(Name) values ('Mr.Tom2'); insert into MyTestTable(Name) values ('Mr.Jackson2');
به وسیله Select نتیجه را بررسی کنید:
SELECT Id, Name FROM MyTestTable;
همان گونه که در تصویر بالا مشاهده میکنید، ستون Id پس از ریست شدن SQL بهجای مقدار ۳ مقدار 1002 را میگیرد.
رفع مشکل پرش Auto Identity Column پس از reset نمودن SQL:
برای رفع این مشکل SQL SERVER CONFIGURATION MANAGER را باز کنید، از سمت چپ پنجره بر روی عبارت SQL services کلیک نمایید، از سمت راست همان پنجره بر روی عبارت «(SQL Server (MSSQLSERVER» کلیک راست کنید، سپس بر روی گزینهی Properties کلیک کنید تا پنجره آن باز شود.
در بخش Startup Parameters مقدار –t272 را اضافه نمایید.
در انتها برای اعمال تغییرات سرویس MS SQL را ریستارت کنید.
2 دیدگاه. دیدگاه تازه ای بنویسید
ببخشید آیا با این روش مقادیر آیدنتیتی قبلی هم اصلاح می شوند؟
خیر، تغییرات از این پس بدرستی ثبت میشود.