Где найти журнал спецификации идентификации, пропуская строки - PullRequest
0 голосов
/ 30 марта 2011

У меня есть база данных Microsoft SQl server 2005 с таблицей, первичный ключ которой имеет спецификацию идентификатора, для которой установлено автоматическое увеличение да.

Недавно первичный ключ пропустил два числа (что, как я понимаю, является нормальным, поскольку онине обязательно являются последовательными).

Однако я хотел бы выяснить, если это возможно, почему они пропущены и когда, то есть, если произошел откат хранимой процедуры, а последовательность первичного ключа не откатилась или они были каким-либо образом удалены.

Мой вопрос заключается в том, есть ли в студии управления сервером Microsoft SQL обозначенная область , в которой хранятся такие записи, как, например, журналы транзакций и т. Д., Чтобы я мог попытаться выяснить, почемуэтот пропуск произошел.

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Предполагая, что у вас есть IDENTITY, которое увеличивается на 1 каждый раз, вы увидите хапы в своих идентификаторах, если произойдет ROLLBACK - в случае отката значение IDENTITY не будет возвращено обратно, поэтомузначение идентификатора, назначенное для этой операции, будет по существу потеряно.Это совершенно нормальное поведение.

Предположим, у вас большой объем INSERT, в случае сбоя или отката одной вставки, тогда откат приращения значения IDENTITY станет кошмаром, поскольку мог бы быть целыйполоса ВСТАВКИ в то же время.

1 голос
/ 30 марта 2011

Если ваш код не занесен в журнал, там нет записи.Поэтому нет: SQL Server не принимает это к сведению.

Откат транзакции или ошибка INSERT (которая является откатом одного оператора) приведет к появлению пробелов в числовой последовательности.SQL Server не принимает это к сведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...