Access не может распознать столбец идентификаторов в связанной таблице SQL Server

Последнее обновление: 23 Января, 2020

ПРОБЛЕМА

При создании связи с таблицей в SQL Server, содержащей столбец идентификаторов, приложение Access обычно определяет этот столбец как столбец счетчика.

Представление, в котором столбец идентификаторов определен как поле счетчика

В сборках Актуального канала (16.0.12325.*) версии 1912 Office 365 и Office 2016/2019 столбцы идентификаторов определяются неправильно как числовые столбцы.

Столбец идентификаторов, не определенный как счетчик

Это происходит при создании связей в пользовательском интерфейсе или с помощью кода, но только для новых связей.  Существующие связи не будут затронуты, если они не обновляются.

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

Например, столбец идентификаторов обычно используется для определения только что добавленной записи.  Если столбец идентификаторов не используется, Access не сможет правильно найти добавленную строку, в результате чего поля в этой строке будут отображаться со значением #Удалено.

Строка, содержащая поля с текстом

Аналогичные проблемы могут возникать при использовании свойства RecordSet.LastModified с целью получения значений для последней добавленной записи. Следующий код:


Set rst = CurrentDb().OpenRecordset("tblWithIdentityColumn")

rst.AddNew
rst!CompanyName = "Contoso"
rst.Update

rst.Bookmark = rst.LastModified
MsgBox rst!CompanyName

Может вызывать ошибку 3167:

Ошибка, указывающая, что запись удалена.

В обоих случаях запись будет успешно добавлена, но Access не сможет ее найти.

Кроме того, Access обычно игнорирует попытки непосредственного обновления столбца идентификаторов. Однако в этих сборках такая попытка допускается, но она завершается сбоем и вызывает следующее сообщение об ошибке:

[SQL Server] Невозможно вставить явное значение для столбца идентификаторов в таблице "tblOrders", если для параметра IDENTITY_INSERT установлено значение OFF. (#544)

СОСТОЯНИЕ: ИСПРАВЛЕНО

Исправление для этой проблемы теперь доступно для версии 1912.  Для получения исправления может потребоваться принудительно выполнить обновление.  Исправленный номер сборки должен быть 12325.20344.

Если вы используете Insiders Slow (Версия 2001) или Insiders Fast (Версия 2002). В этих каналах это исправление еще недоступно, поэтому вам может потребоваться перейти на Актуальный канал.

Примечание

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

Значок Эксперты (мозг, шестеренки) Спросите экспертов

Обращайтесь к экспертам, обсуждайте новости, обновления и рекомендации, а также читайте наш блог.

Microsoft Tech Community

Значок Сообщество Получить помощь в сообществе

Задавайте вопросы сотрудникам службы поддержки, MVP, инженерам и другим пользователям Office и находите решения.

Форум Office по ответам

Запрос функции значка (лампочка, идея) Предложить новую функцию

Мы будем рады вашим отзывам и предложениям. Вам наверняка есть, что сказать. Поделитесь с нами своими мыслями.

Отправка отзывов

См. также

Исправления и временные решения для последних проблем в Access