در قسمت اول و قسمت دوم این مقاله به مقدار موجود در فیلدهایی از نوع Identity توسط SQL Server اعمال میگردد، اشاره شد . همچنین در قسمت سوم این مقاله به راهکارهایی برای Assign کردن این فیلد ها پرداخت شد. در مقاله چهارم به بیان دستور DBCC CheckIdent میپردازیم.برخی از مواقع کاربران خواستار این هستند که مقدار Identity را Reset کنند برای انجام اینکار میتوانید از دستور DBCC CheckIdent استفاده نمایید.
شکل کلی این دستور به صورت زیر میباشد.
DBCC CHECKIDENT ) table_name [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ] (
پارامترهای مربوط به این دستور عبارتند از:
1- Table_Name: این پارامتر نام جدولی را مشخص میکند که میخواهید مقدار آن را دستکاری نمایید.
2- NORESEED: در صورتیکه از این کلمه کلیدی به عنوان پارامتر دوم استفاده شود. باعث میشود که تغییر در مقدار Identity بوجود نیاید.
3- RESEED: در صورتیکه از این کلمه کلیدی به عنوان پارامتر سوم استفاده شود. باعث میشود که تغییر در مقدار Identity با توجه به پارامتر چهارم بوجود آید.
4- new_reseed_value: این پارامتر مشخص میکند که Identity باید به چه مقداری Reset شود.
نکته : لازم به ذکر است که ورود پارامتر دوم و سوم اختیاری بوده و اجباری به ورود آن نمیباشد.
قبل از بررسی مثالها Scriptهای زیر را برای ایجاد جدول و رکوردهای مربوط به آن را اجرا نمایید.
USE tempdb GO CREATE TABLE Customers1 ) ID INT IDENTITY, Name NVARCHAR(100), [Address] NVARCHAR(200) ( GO INSERT INTO Customers1 (Name,[Address]) VALUES (N'مسعود',N'میانه'), (N'فرید',N'میانه'), (N'احمد',N'میانه'), GO SELECT * FROM Customers1
مثالهای زیر حالتهای مختلف مربوط به این دستور را به شما نشان میدهد.
مثال 1 : در صورت ورود پارامتر اول، صرفاً مقدار جاری Identity به شما نمایش داده میشود.
USE tempdb GO DBCC CHECKIDENT (Customers1); GO
مثال 2 : در صورت استفاده از NORESEED به عنوان پارامتر دوم، صرفاً مقدار جاری Identity به شما نمایش داده میشود. البته ممکن است هنگام استفاده از این حالت در برخی از شرایط خروجی مقدار صحیحی نباشد.
USE tempdb GO ;DBCC CHECKIDENT (Customers1,NORESEED) GO
مثال 3 : در صورت استفاده از RESEED به عنوان پارامتر دوم، صرفاً مقدار جاری Identity را به شما نمایش داده میشود.
USE tempdb GO DBCC CHECKIDENT (Customers1,RESEED); GO
مثال 4 : در صورت استفاده از RESEED به عنوان پارامتر دوم و تعیین مقدار جدید برای Identity از این به بعد مقدار تولید شده برای Identity برابر با new_reseed_value+1 خواهد بود.
USE tempdb GO ;DBCC CHECKIDENT (Customers1,RESEED,300) GO
در این حالت چنانچه رکوردی در جدول درج شود مقدار Identity برابر با new_reseed_value+1 خواهد بود.
INSERT INTO Customers1 (Name,[Address]) VALUES (N'خدیجه',N'میانه') GO SELECT * FROM Customers1
دانلود مقاله آموزشی:
1 دیدگاه
MEHDI
سلام استاد
من کل اینترنت رو گشتم ولی متاسفانه چیزی در مورد Identity پیدا نکردم تا اینکه دیدم در سایت شما پنج قسمت به طور کامل قرار داده شده تشکر ویژه برای آموزش خوبتون