У меня есть приложение VB6/Access, которое иногда сталкивается с проблемой неправильного начального числа поля автонумерации.
Допустим, есть таблица MYTABLE с идентификатором поля автонумерации (это также первичный ключ). Допустим, на данный момент максимальное значение идентификатора равно 1000. Когда приложение вставляет новую запись (значение идентификатора не указано явно), оно по какой-то причине решает, что следующее значение поля автонумерации равно 950 (а не 1001, как должно быть ) — поэтому возникает ошибка нарушения первичного ключа.
Я нашел статью базы знаний, в которой описываются мои симптомы: http://support.microsoft.com/kb/884185< /а> . Короче говоря, они предлагают запустить запрос:
ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1)
Когда я пытаюсь это сделать, происходит сбой с «Недопустимым типом данных поля».
Проблема исправляется, если я открываю базу данных в Access и делаю компакт/восстановление, но мне нужно иметь возможность исправлять такие проблемы внутри приложения: оно установлено на пару тысяч ПК по всему миру, и просит людей сжать /repair с доступом не вариант.
Я использую DAO DBEngine.CompactDatabase
для выполнения сжатия/восстановления внутри приложения, но это не решает проблему с начальным числом, и необходимы некоторые дополнительные приемы.
Любые идеи для решения?
ALTER TABLE MYTABLE ALTER COLUMN ID COUNTER(1001,1)
? - person Todd Main   schedule 19.02.2010