|
Проблема с IDENTITY
|
|||
---|---|---|---|
#18+
Hello All, столкнулся с проблемой: при добавлении записи в таблицу, у которой PrimaryKey это IDENTITY int, MSSQL 6.5 пишет, что нарушается уникальность ключа !? Может кто объяснит из-за чего это бывает и, главное, как с этим бороться? С уважением, Алексей. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2000, 12:55 |
|
Проблема с IDENTITY
|
|||
---|---|---|---|
#18+
Действительно существует проблема с IDENTITY на SQL Server 6.5 - в основном это проявляется после перезагрузки сервера - при этом почему-то теряется последнее значение. Поэтому совет такой - не пользоваться IDENTITY на шестерке на постоянных таблицах, на временных же все работает корректно. Генерите значение сами, или переходите на семерку!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2000, 06:44 |
|
Проблема с IDENTITY
|
|||
---|---|---|---|
#18+
Такая проблема возникала при использовании trial версии. Счётчик падал после истечения 120 дней. Хотя это, если правильно помню, происходило иногда и чаще. Лечение такое (лечить приходится при каждом падении): необходимо выполнить примерно такой скрипт DECLARE @MaxID int SELECT @MaxID=max(ID) FROM Table SET IDENTITY_INSERT Table ON INSERT Table (ID,...) VALUES (@MaxID+1,...) SET IDENTITY_INSERT Table OFF DELETE Table WHERE ID=@MaxID+1 Он начнёт счётчик с @MaxID+1, после чего "мусорная" запись удаляется. Эту процедуру надо повторить для каждой таблице, где глюканул счётчик. Естественно, это не кардинальное решение, но данные спасти можно и сервер успокаивается ещё на несколько месяцев. Рекомендую перейти на SQL Server 7 или на SQL Server 2000 b2. Здесь этой проблемы нет (по опыту 1.5 лет активной эксплуатации в корпоративной задаче). Слава Левашёв (asklevi@email.com) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2000, 10:17 |
|
Проблема с IDENTITY
|
|||
---|---|---|---|
#18+
У меня иногда бывает такая ошибка при работе 1С Предприятия для MSSQL 6.5, когда клиент зависает на какой-то операции записи. Лечится командой dbcc checkident (таблица). Так как это может затрагивать несколько таблиц, я написал следующую процедуру, которая делает эту команду по всем таблицам, имеющим поле IDENTITY. create procedure _1BVN_IDENT as declare @table varchar(30), @s varchar(50) declare object_cursor cursor for select name from sysobjects where (type = 'U') and (category & 0x1 = 1) open object_cursor fetch next from object_cursor into @table while (@@fetch_status <> -1) begin if (@@fetch_status <> -2) begin print @table select @s = "dbcc checkident (" + @table + ")" exec ( @s ) end fetch next from object_cursor into @table end print "Identity values have been updated for all tables." deallocate object_cursor ... |
|||
:
Нравится:
Не нравится:
|
|||
30.08.2000, 05:23 |
|
|
start [/forum/topic.php?fid=46&fpage=3600&tid=1827720]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 425ms |
0 / 0 |