Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Симптом
Связанная таблица Microsoft Access, содержащая один или несколько столбцов datetime или datetime2, подключенная к базе данных Microsoft SQL Server и имеющая уровень совместимости 130 или выше (уровень совместимости для SQL Server 2016), возвращает #Deleted в результатах.
При попытке зафиксировать изменения записи в связанной таблице также может появиться следующее сообщение "Конфликт записи ".
Эта запись была изменена другим пользователем после начала редактирования.
Причина
Проблема возникает из-за того, что столбцы datetime или datetime2 содержат значения дробных секунд. Как обработка дробных секунд для типов datetime2 была изменена начиная с Microsoft SQL Server 2016 года. Дополнительные сведения об изменении см. в следующих статьях:
- datetime2 (Transact-SQL)
- улучшения базы данных SQL Server и Azure SQL при обработке некоторых типов данных и необычных операций
Note
На тип данных datetime также влияет переход на datetime2, поскольку драйвер ODBC для SQL Server преобразует datetime в datetime2 при отправке данных на сервер.
Резолюция
Access представляет новый улучшенный тип данных Дата & время (расширенный), начиная с версии 2010 Приложения Microsoft 365.
Для повышения совместимости синтаксиса с SQL и повышения точности и уровня детализации записей, включающих даты и время, Microsoft реализует тип данных DateTime2 в Access. Этот тип данных будет включать более крупный диапазон дат (0001-01-01–999-12-31), который имеет лучшую точность времени (наносекунды, а не секунды). Чтобы включить тип данных DateTime2, выберите Новое поле>Дата и время (расширенный). Дополнительные сведения см. в разделе Использование расширенного типа данных даты и времени.
Note
Тип данных Дата и время (расширенный) несовместим с предыдущими версиями Microsoft Access. В результате, если тип данных реализуется в локальной таблице Access, а база данных Access используется с предыдущей версией, которая не включает эту функцию, невозможно открыть базу данных.
Вы можете включить или отключить тип данных Дата/время (расширенный) для операций связывания и импорта с помощью параметра Access Текущая база данныхПоддерживать тип данных "Дата/время (расширенный)" (DateTime2) для связанных/импортированных таблиц. Дополнительные сведения см. в статье Настройка пользовательских параметров текущей базы данных.
Для более ранних версий Access используйте один из следующих методов, чтобы обойти эту проблему:
- Измените уровень совместимости базы данных SQL Server на 120 (уровень совместимости для SQL Server 2014) или меньше.
- Убедитесь, что столбцы datetime и DateTime2 не являются частью первичного ключа.
- Добавьте в таблицу новый столбец, используя тип данных timestamp или rowversion.
- Удалите дробные секунды из столбцов datetime с помощью инструкции UPDATE .
- Измените тип данных с даты и времени на smalldatetime. Примечание. Это округляет значения до ближайшей минуты.
- Если изменить данные не требуется, можно создать запрос и изменить свойство RecordsetType на Snapshot , которое вернет набор записей только для чтения, который не влияет на эту проблему.
Note
Используйте Диспетчер связанных таблиц в Access, чтобы обновить связанные таблицы после внесения любых изменений в их структуру на SQL Server.