ورود

View Full Version : مشکل در طراحی جدول



Meysam136611
سه شنبه 27 مهر 1395, 10:16 صبح
سلام به همه دوستان.من یه مشکلی تو ساخت جدول تو اس کیو ال دارم و اونم اینه که فیلد کلیدی که تو یه جدول تعیین میکنم و خاصیت Identityاون رو Trueمیکنم و تعیین میکنم که آی دی ها از یک شروع بشن و یکی یکی به مقدارشون اضافه بشه این عمل صورت نمیگیره به این صورت که در ثبت اول چند رکورد اول آی دی هاشون درست داده میشه ولی در ثبتهای بعدی آی دی ها از 1000 یا 2000 شروع میشن.من میخوام آی دی ها دنباله همون آی دی های اول باشن و پرش نداشته باشن.لطفا کمکم کنید.
ممنون

Meysam136611
چهارشنبه 28 مهر 1395, 12:56 عصر
کسی نیست بنه ما کمک کنه آیا؟

Davidd
چهارشنبه 28 مهر 1395, 16:19 عصر
سلام. فیلد identity لزوما یکی یکی زیاد نمیشه و در بعضی موارد بسته به ورژن SQL Server از 1000 یا 10000 ... شروع میشه. با دستور DBCC CHECKIDENT('TableName', RESEED, 0) میشه از اینکار جلوگیری کرد اما در صورتی که مثلا یکی از رکوردهای میانی حذف شده باشه، کلید رکورد جدید برابر ماکسیمم به اضافه یک نمیشه بلکه برابر کلید رکورد حذف شده میشه.
اگه حتما باید فیلد کلید به صورت پشت سر هم باشند بهتره از فیلد int ساده استفاده کنی و خودت قبل از Insert مقدار ماکسیمم کلید بدست بیاری و یکی اضافه کنی.

سید مسعود موحد
چهارشنبه 13 بهمن 1395, 11:47 صبح
آیا شما از mirroring یا Replicate استفاده میکنید اگر از این ابزار استفاده میکند در زمان Roll over این اتفاق می افتد

راه حل
با جای گذاری قسمت های مربوطه از قبیل نام فیلد و نام جدول و نام دیتابیس این پروسیجر رو در دیتابیس master ذخیره کنند و یکبار ریستارت کنن و بعد از ان به صورتی که خودشان تعیین کرده اند انجام خواهد شد.


USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
----=======درست کردن پروسیجر در دیتابیس مستر برای شناسایی اخرین ای دی ایدنتیتی ==============
Create 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



----========اجرا بعد از هر بار راهندازی به صورت اتوماتیک =========

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

برای اطلاعات بیشتر به لینک های زیر مراجعه کنید:
http://beyamooz.com/forum/threads/102-Identity-%D9%88-%D9%86%DA%A9%D8%AA%D9%87-%D9%87%D8%A7%DB%8C-%D8%A2%D9%86-%D8%AF%D8%B1-SQLSERVER


http://stackoverflow.com/questions/14146148/identity-increment-is-jumping-in-sql-server-database