powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Identity прыгнуло на 1000
25 сообщений из 40, страница 1 из 2
Identity прыгнуло на 1000
    #38197970
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сразу в нескольких базах(одинаковых по структуре), в течении нескольких дней
поле ID int IDENTITY(1,1) в разных таблицах прыгнуло ровно на 1000
т.е. шли номера заказов ..., 11644, 11645
затем резко пошло 12645, 12646,...
а в некоторых чуть меньше чем на тысячу 173, 174, 1169, 1170

закономерности не вижу вообще
Identity( да и вообще те таблицы), никто не трогал,
за последние N лет такого никогда не случалось
месяц назад перешли на новый сервер Win 2012 + SQL Server 2012
причем сейчас уже все продолжается как положено
но клиенты возмущаются что у них прыгнули номера инвойсов, для них это важно
я тоже в шоке

в чем может быть проблема?
вероятность того что сразу несколько фирм создали 1000 заказов и тут же из удалили исключена :) проверял лог
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38197983
kalimba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DNV,

http://msdn.microsoft.com/ru-ru/library/ms186775.aspx читайте замечания.
Если у вас SQL Server 2012, Вам для таких целей надо использовать sequence - http://msdn.microsoft.com/ru-ru/library/ff878058.aspx .
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38197984
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVв чем может быть проблема?
Нет никакой проблемы.
Вы почему то решили, что IDENTITY гарантирует непрерывность значений.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198017
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalimbaЕсли у вас SQL Server 2012, Вам для таких целей надо использовать sequence - http://msdn.microsoft.com/ru-ru/library/ff878058.aspx] http://msdn.microsoft.com/ru-ru/library/ff878058.aspx .sequence тоже не гарантирует непрерывности.

Если есть такие требования у пользователей, то их нужно просто реализовывать, программировать, встроенные средства этого обеспечить не могут, и это не ошибка программистов, а осознанное решение.
DNVвероятность того что сразу несколько фирм создали 1000 заказов и тут же из удалили исключена :) проверял логМожет быть, лог фиксирует не все вставки, как реализовано логирование?
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198080
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перелопатив интернет, понял что это "фишка" SQL 2012
после Fail перезагрузки SQL он такое вытворяет
как раз это это и случилось в те дни
для возврата к старому поведению советуют выполнить "Use trace flag 272"
но я что-то не понял что это за команда, и как ее выполнить
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198082
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVперелопатив интернет, понял что это "фишка" SQL 2012
после Fail перезагрузки SQL он такое вытворяет
как раз это это и случилось в те дни
для возврата к старому поведению советуют выполнить "Use trace flag 272"
но я что-то не понял что это за команда, и как ее выполнитьЭто у вас в мозгах "фишка", исключительно. Забейте и найдите себе более полезные занятия, чем погоня за "дырками identity".
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198083
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и еще, на локальной машине у меня такое тоже случалось с SQL 2012 но я как то не реагировал
а на сервере это уже серьезно, компании - клиенты негодуют.
Переделывать систему с ручной нумерацией почти не реально
довольно большой проект сотни процедур... надо как-то вернуть старое поведение. За всю историю проекта в SQL 2000 - 2008 R2 никогда такого не было.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198084
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVи еще, на локальной машине у меня такое тоже случалось с SQL 2012 но я как то не реагировал
а на сервере это уже серьезно, компании - клиенты негодуют.
Переделывать систему с ручной нумерацией почти не реально
довольно большой проект сотни процедур... надо как-то вернуть старое поведение. За всю историю проекта в SQL 2000 - 2008 R2 никогда такого не было.Ну, вы сами себе злобный буратина. Ставьте назад SQL 2000, чо.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198085
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичDNVперелопатив интернет, понял что это "фишка" SQL 2012
после Fail перезагрузки SQL он такое вытворяет
как раз это это и случилось в те дни
для возврата к старому поведению советуют выполнить "Use trace flag 272"
но я что-то не понял что это за команда, и как ее выполнитьЭто у вас в мозгах "фишка", исключительно. Забейте и найдите себе более полезные занятия, чем погоня за "дырками identity".
да нет не только у меня
если интересно, не ляпнуть а разобраться, почитайте ссылки
http://www.rsdn.ru/forum/db/5059467.all
https://connect.microsoft.com/SQLServer/feedback/details/739013/alwayson-failover-results-in-reseed-of-identity#details

это именно поведение SQL 2012
и я не могу просто это проигнорировать, т.к. это касается не меня а клиентов
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198086
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичНу, вы сами себе злобный буратина. Ставьте назад SQL 2000, чо.
вы когда нибудь делали downgrade базы? только реально, а не теоретически?
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198087
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVГавриленко Сергей Алексеевичпропущено...
Это у вас в мозгах "фишка", исключительно. Забейте и найдите себе более полезные занятия, чем погоня за "дырками identity".
да нет не только у меня
если интересно, не ляпнуть а разобраться, почитайте ссылкиМне реально не интересно разбираться, почему некоторый механизм не ведет себя так, как никогда и не гарантировалось, что он должен себя вести.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198089
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVГавриленко Сергей АлексеевичНу, вы сами себе злобный буратина. Ставьте назад SQL 2000, чо.
вы когда нибудь делали downgrade базы? только реально, а не теоретически?Ну ради клиентов бы сделал, если посчитал, что сделать нормальную нумерацию сложнее, чем даунгрейднуть базу.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198092
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда избавьте меня от своих словоиспражнений, и дайте ответить тем кто может мне помочь.
провалы при удалении или при rollback не интересуют
но вот еще один скачок в 1000 единиц может привести к серьезному конфлитку с заказчиками
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198095
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к переносу сервера мы готовились почти полгода, т.к. простои недопустимы
и если я просто скажу начальству а двайте-ка еще раз переустановим сервер, меня не поймут
единственное решение в сложившейся ситуации - возврат к старому поведению.
разберусь, отпишу что сделал
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198096
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVГавриленко Сергей АлексеевичНу, вы сами себе злобный буратина. Ставьте назад SQL 2000, чо.
вы когда нибудь делали downgrade базы? только реально, а не теоретически?
Делали. Относительно несложно

Нумерацию переделать с identity на сиквенс/иной счетчик - тоже довольно несложно, даже при наличии не слишком правильно написанного приложения.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198098
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198100
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVк переносу сервера мы готовились почти полгода, т.к. простои недопустимыХреново вы готовились, раз такой (в ваших понятиях) косяк проморгали.
DNVтогда избавьте меня от своих словоиспражнений, и дайте ответить тем кто может мне помочь.Посты одного мембера данного ресурса никак не могут помешать писать ответы другому. Плохо, что такие очевидные вещи для вас не очевидны.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198106
DNV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на локальном компе помог вариант с
http://i.ll.do/2013/01/how-to-solve-sql-server-2012-identity.html
What I did: Setting Trace Flag 272 on SQL Server 2012

Open "SQL Server Configuration Manager"
Click "SQL Server Services" on the left pane
Right-click on your SQL Server instance name on the right pane ->Default: SQL Server(MSSQLSERVER)
Click "Properties"
Click "Startup Parameters"
On the "specify a startup parameter" textbox type "-T272"
Click "Add"
Confirm the changes


буду завтра запускать на сервере
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198184
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNV,

Тебе-то что за горе?
Ну, прыгнули...
Сервер надо аккуратно гасить, и все будет ок с идентити. Но если и прыгнет — ничего страшного.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198185
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNV,

У тебя номера инвойсов через identity генерируются? Ну-ну...
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198192
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNV, запомни раз и навсегда

Identity гарантирует уникальность, а не генерацию в восходящем порядке, без дырок. Он так устроен by design. Он именно поэтому быстр. А генерация в строго восходящем порядке вообще требует сериализации всех транзакций к данной таблице, чего ты явно не хотел бы.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198198
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivIdentity гарантирует уникальностьНе гарантирует.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198212
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DNVпопробую этот вариант
http://i.ll.do/2013/01/how-to-solve-sql-server-2012-identity.html

Тебе не identity надо фиксить, а логику своего приложения, тебе надо переделать генерацию номеров инвойсов с identity на свой собственный генератор.

PK таблицы оставляешь в покое, как он есть, добавляешь туда ещё одно поле, номер инвойса, посде добавления UPDATE-ишь его из старого поля (PK). Заменяешь в приложении все случаи использования старого PK как номера инвойса на новое поле.
при очень большом количестве таких мест или сложном изменении можно сделать наоборот -- добавить новое поле для первичного ключа, и про UPDATE-ить его из старого поля. По идее, PK должен использоваться реже и более детерминировано, чем номер инвойса.

Ну и о генерации нового номера инвойса --
делаешь таблицу

NEXT_DOCUMENT_NUMBER
(
document_type varchar(50) primary key,
next_doc_number int
...
);


Ну и внутри транзакции создания документа делаешь

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
begin tran

...

update NEXT_DOCUMENT_NUMBER
set next_doc_number = next_doc_number + 1
where document_type = 'INVOICE'

select @new_invoice_no =  next_doc_number - 1
from NEXT_DOCUMENT_NUMBER
where document_type = 'INVOICE'


insert into INVOICE (invoice_no,...) values ( @new_invoice_no, ...)
...


commit / rollback
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198214
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invmMasterZivIdentity гарантирует уникальностьНе гарантирует.

Оно гарантирует, что при правильном использовании оно будет тебе генерировать уникальное значение при каждом обращении.
И это в многопользовательской среде.
Естественно, в БД констрейнтом identity не является, если ты это имел в виду.
...
Рейтинг: 0 / 0
Identity прыгнуло на 1000
    #38198224
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЕстественно, в БД констрейнтом identity не является, если ты это имел в виду.Вот именно. Поэтому, имхо, нельзя говорить, что Identity гарантирует уникальность, дабы не вводить в заблуждение новичков.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Identity прыгнуло на 1000
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]