PDA

View Full Version : اشکال افزایش 1000 تایی به رکرود های که identity هستند در sql 2106



gama_slv
سه شنبه 03 مرداد 1396, 14:23 عصر
در جداولی که کیلد اصلیشون identity نمیدونم به چه دلیلی بصورت ناگهانی وقتی یک رکرود اضافه میکنم 1000 تا به عدد قبلی رکوردم اضافه میکنه.
نمیتونم برم ببینم برای هر کاربر چنین اتفاقی افتاده یا نه.برای اینکه کلا این مشکل پیش نیاد چه کاری باید کرد.

رامین مرادی
چهارشنبه 04 مرداد 1396, 14:51 عصر
خب در حالت اتو نامبر شما گام افزایش رو دونه دونه افزایش بده . اگه اشتباه نکنم گزینه Identity Seed مقابل این خاصیت عدد 1 رو بزار درست میشه

gama_slv
پنج شنبه 05 مرداد 1396, 14:33 عصر
خب در حالت اتو نامبر شما گام افزایش رو دونه دونه افزایش بده . اگه اشتباه نکنم گزینه Identity Seed مقابل این خاصیت عدد 1 رو بزار درست میشه
من برای ساخت دیتابیس از code first در دات نت استفاده میکنم.مشکل Identity Seed نیست.
https://www.codeproject.com/Tips/668042/SQL-Server-2012-Auto-Identity-Column-Value-Jump-Is
این یک مشکل که از sql 2012 به بعد هست به خاطر sequences هایی که اضافه کرده.
راه حل هم برای رفعش هست اماما چون در چند ین سیسم قرار پروژه کار کنه نمیدونم چطوری از پیش آمدنش جلوگیری کنم.

tooraj_azizi_1035
دوشنبه 09 مرداد 1396, 11:48 صبح
سلام
می تونید از trace flag 272 استفاده کنید تا برای هر مقدار Identity یک رکورد لاگ تولید بشه که روی Performance تاثیر منفی داره و راه دوم:


USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[ResetOrderIdentityAfterRestart]
AS
BEGIN

begin TRAN
declare @id int = 0
SELECT @id = MAX(id) FROM [DatabaseName].dbo.[TableName]
--print @id
DBCC CHECKIDENT ('[DatabaseName].dbo.[TableName]', reseed, @id)
Commit

END


و بعد به Startup اون رو اضافه کنید:


EXEC sp_procoption 'ResetOrderIdentityAfterRestart', 'startup', 'on';