Доступ к внешнему интерфейсу и идентификаторам автономных номеров для внутреннего сервера SQL Server - PullRequest
0 голосов
/ 21 декабря 2009

Заголовок вопроса - суть проблемы. У меня есть внешний интерфейс Access 2007 (формат 2003) с серверной частью SQL Server 2008 Express. Форма ввода имеет подчиненную форму, связанную с другой таблицей. При добавлении записи в основной форме поле PK таблицы (с автоматическим приращением) пропускает около четырех идентификаторов (я говорю об этом, потому что иногда это три, иногда пять, иногда 4).

Для иллюстрации, если последний идентификатор равен 1234, идентификатор новой записи может быть 1238.

Я прошел по коду, но не нашел ничего, что указывало бы на несколько сохранений или удалений. Эта проблема проявляется независимо от того, добавлены ли какие-либо записи в подчиненную форму.

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

Ответы [ 3 ]

2 голосов
/ 21 декабря 2009

Проверьте спецификацию Identity в базе данных, чтобы увидеть, что такое Identity Increment. Он может увеличиваться с интервалом больше 1, хотя это не объясняет вашу нечетную нумерацию. Это хорошая отправная точка.

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

2 голосов
/ 21 декабря 2009

запустите SQL Server Profiler и наблюдайте за событиями RPC: Completed и SqlStmt: Completed, чтобы увидеть, что именно выполняется.

SQL Server не пропускает числа без всякой причины. похоже, что что-то вставляется и откатывается назад, или вставка строк не удалась.

2 голосов
/ 21 декабря 2009

Может случиться так, что некоторые INSERT в таблице выполняются внутри транзакции, а затем транзакция откатывается - это приведет к использованию идентификаторов, оставляя пробелы.

...