Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 отчего образуются дырки в непрерывной последовательности  [new]
Lika95
Guest
подскажите, пожалуйста!
имеется таблица с автоинкрементым полем, типа:

CREATE TABLE [dbo].[T1](
	[id] [int] IDENTITY(1,1) NOT NULL,
	...
 CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


т.е. при автоинкрементном поле вроде должна создаваться непрерывная последовательность.
есть тригер на другой таблице, который в эту таблицу делает аудит.
могут ли при каких то условиях появляться дырки в последовательности? ну, например, произошел откат транзакции, или еще что-то подобное.
2 июл 12, 10:14    [12802335]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Lika95,

откат транзакции, удаление записей, явная вставка IDENTITY c пропуском значений после SET IDENTITY_INSERT ON
2 июл 12, 10:18    [12802351]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
step_ks
Member

Откуда:
Сообщений: 936
https://www.sql.ru/forum/actualthread.aspx?tid=941956
2 июл 12, 10:18    [12802357]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37052
Lika95
т.е. при автоинкрементном поле вроде должна создаваться непрерывная последовательность.
Это вы где прочитали, что "должна"?
2 июл 12, 12:37    [12803232]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
Lika95
т.е. при автоинкрементном поле вроде должна создаваться непрерывная последовательность.
Не должна.

Lika95
могут ли при каких то условиях появляться дырки в последовательности? ну, например, произошел откат транзакции, или еще что-то подобное.
Могут, например да, при откате транзакции. Ну и вообще - если разработчики сервера решат, что им выгоднее делать "дырки" при какой то операции - этому ничего не мешает, т.к. в документации непрерывность не гарантированна.
2 июл 12, 15:41    [12804830]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Lika95
Guest
спасибо, стало понятнее.
но вопрос еще не закрыт. все клиенты написаны на msaccess 2000 и подключены через odbc. т.е. если отвалился клиент/сервер не важно по какой причине, то происходит откат транзакции. но, насколько я понимаю, аксес работает так, что он обрабатывает только по 1-ой записи. значит может образоваться дырка только в 1 запись? а если их с 10 и более подряд в последовательности?
в лог таблицу кладутся, если можно так сказать, только "незаконные изменения", и они редкость. соответственно, если в лог таблице есть большие дырки, то это уже плохо...
3 июл 12, 06:54    [12807422]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lika95
но, насколько я понимаю, аксес работает так, что он обрабатывает только по 1-ой записи.

Ваше понимание основано на мониторинге команд, которые сервер получает от клиента или на чем то другом ?
3 июл 12, 09:54    [12807790]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5975
Всегда было интересно, почему же людей так волнуют эти дырки в автоинкрементах?
3 июл 12, 10:37    [12808054]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Lika95
Guest
Glory
Lika95
но, насколько я понимаю, аксес работает так, что он обрабатывает только по 1-ой записи.

Ваше понимание основано на мониторинге команд, которые сервер получает от клиента или на чем то другом ?

ну в общем-то да.
т.е. я видела, что когда на аксесовском клиенте вроде как обрабатывается групповой запрос, то на сервере, ну хотя бы исходя из того как триггер на логах отрабатывал, все записи обрабатывались по одной.
3 июл 12, 11:13    [12808395]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Lika95
Guest
Сон Веры Павловны
Всегда было интересно, почему же людей так волнуют эти дырки в автоинкрементах?


собственно меня это практически не волновало, ну до того момента, когда я заподозрила, что в лог таблице данных нехватает. и обычные мелкие дырки меня никак не смущают, а вот когда они там большими пачками.
а так как задача у нас реализована через ж..., и, как известно безопасность бывает двух уровней: hi и нехай, а у нас последнее, то эти дырки вроде как единственный метод понять, что у нас не все так чисто )))))))
3 июл 12, 11:17    [12808428]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Lika95
Glory
пропущено...

Ваше понимание основано на мониторинге команд, которые сервер получает от клиента или на чем то другом ?

ну в общем-то да.
т.е. я видела, что когда на аксесовском клиенте вроде как обрабатывается групповой запрос, то на сервере, ну хотя бы исходя из того как триггер на логах отрабатывал, все записи обрабатывались по одной.
Слово "профайлер" ничего не говорит?
3 июл 12, 11:34    [12808584]     Ответить | Цитировать Сообщить модератору
 Re: отчего образуются дырки в непрерывной последовательности  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lika95
ну в общем-то да.
т.е. я видела, что когда на аксесовском клиенте вроде как обрабатывается групповой запрос, то на сервере, ну хотя бы исходя из того как триггер на логах отрабатывал, все записи обрабатывались по одной.

Это вовсе не значит, что транзакций столько же, сколько и команд.
3 июл 12, 11:44    [12808699]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить