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

Откуда: Саратов
Сообщений: 1217
Всем привет! подскажите как правильно выйти из ситуации?
ситуация следующая:
Есть таблица с автоинкрементным полем типа int, это же поле является первичным ключом в таблице, на эту таблицу и это поле ссылается множество других таблиц в базе и множество sql запросов которые описаны во внешнем ПО которое работает с базой, автоинкремент в этом поле стартует с нуля (0). В скором времени ожидается достижения максимального значения для этого поля, как правильно выйти из ситуации? На мой взгляд есть одно верное решение это поменять тип поля например на bigint и постепенно во всех зависимых местах поменять тоже, но это очень трудоемко, может есть еще какое то решение?
1 фев 15, 20:18    [17203343]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Mandarin
может есть еще какое то решение?
Есть. Просто не вставляйте в эту таблицу записи.
1 фев 15, 20:53    [17203467]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
Mandarin
На мой взгляд есть одно верное решение это поменять тип поля например на bigint и постепенно во всех зависимых местах поменять тоже, но это очень трудоемко, может есть еще какое то решение?
Конечно, нет.
1 фев 15, 20:56    [17203480]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Mandarin
может есть еще какое то решение?
use tempdb;
go

create table dbo.t (id int identity (1, 1));

insert into dbo.t default values;
insert into dbo.t default values;

select * from dbo.t;

dbcc checkident('dbo.t', reseed, -2147483648);

insert into dbo.t default values;
insert into dbo.t default values;

select * from dbo.t;

drop table dbo.t;
1 фев 15, 21:21    [17203560]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
dbcc checkident
Guest
invm,

и потом встреча на эльбе))
1 фев 15, 21:31    [17203590]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
dbcc checkident
и потом встреча на эльбе))
Ну так может хватит на N-лет. А там помрет либо ишак, либо эмир :)
1 фев 15, 22:07    [17203709]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
invm
dbcc checkident
и потом встреча на эльбе))
Ну так может хватит на N-лет. А там помрет либо ишак, либо эмир :)
Да, что то я забыл про очевидное решение использовать отрицательную часть...

Но вообще у них видимо быстро дошло до конца, лучше бы перейти на bigint, тут же ничего сложного (не считая возможных траблов с приложением, естественно)
1 фев 15, 22:14    [17203727]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21253
invm
dbcc checkident('dbo.t', reseed, -2147483648);

Эммм... а что, unsigned int не умеет быть автоинкрементом?
2 фев 15, 09:11    [17204462]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31986
Akina
invm
dbcc checkident('dbo.t', reseed, -2147483648);


Эммм... а что, unsigned int не умеет быть автоинкрементом?
Не умеет, потому что нет такого типа данных.
2 фев 15, 10:12    [17204734]     Ответить | Цитировать Сообщить модератору
 Re: Переполнение автоинкрементного Primary Key  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21253
alexeyvg
нет такого типа данных.
Да, правда... это ж MS SQL, не перестроился...

"Какая жаль!" (с)
2 фев 15, 10:28    [17204832]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить