MS-Access видит поля datetime2 сервера SQL как TEXT

Я изменяю размеры своего приложения с MS-Access FE и BE до MS-Access FE и SQL Server BE. Я использовал инструмент "увеличения размера" SSMA Access для преобразования всех таблиц из Access в SQL, а затем связал таблицы SQL в FE Access с использованием ODBC.

В моей базе данных доступа некоторые таблицы имели столбцы DateTime, которые были преобразованы в столбец datetime(0) в SQL Server. После того, как я связал таблицы тезисов в Access, Access увидит эти столбцы как текстовые, даже если они являются столбцами datetime2(0) в BE SQL-сервера.

Это вызывает некоторые проблемы, потому что запросы, которые работали с форматом даты, не работают с текстовым форматом. Есть ли способ связать таблицы так, чтобы поле datetime(0) обрабатывалось Access как значения datetime?

5 ответов

Решение

Согласно TechNet, поддержка нового типа данных datetime2 ограничена. Я бы пошел с datetime, если вы можете.

Аналогичная проблема: РЕШЕНО

У меня есть SQL-сервер с полем как тип данных DATETIME2, и я подключаюсь к нему через ODBC в виде связанной таблицы в MS Access на Win7.

При подключении с двух разных рабочих станций, использующих одну и ту же базу данных, у одного был правильный тип данных "Дата / Время", а у другого был тип данных "Короткий текст"

Решение. Оказывается, что связанные таблицы были созданы с использованием двух разных файлов DSN, один из которых содержал список "DRIVER=SQL Server", а другой - "DRIVER=SQL Server Native Client 11.0". Чтобы иметь тип данных "Дата / Время" через ссылку ODBC, мне нужно было использовать Клиент 11.0.

Чтобы увидеть, какие драйверы вы установили:

From the start menu search for "ODBC"
Select "Data Sources (ODBC)".  
Click on the "Drivers" tab 

Вы увидите установленные драйверы. У меня есть три.

SQL Server                     6.01.7601.17514
SQL Server Native Client 10.0  2007.100.5500.00
SQL Server Native Client 11.0  2011.110.6020.00

Я считаю, что SQL Server версии 6 устанавливается Win7 и обновляется через Центр обновления Windows. Если это все, что у вас есть, вы получите ТЕКСТ из DATETIME2 SQL DataTypes только через связанные таблицы.

Собственные клиенты были установлены в SQL Server Management Studio 2008 и 2012 соответственно.

Вы можете загрузить и установить собственный клиент SQL Server 11.0 по https://www.microsoft.com/en-us/download/details.aspx?id=36434

SSMA для доступа преобразует любое поле даты / времени со значениями, которые недопустимы в SQL Server, в текст. Вы должны запустить SSMA, чтобы попробовать преобразование, и оно сообщит вам о проблемах, а затем вы сможете очистить данные перед фактическим преобразованием.

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

Я столкнулся с той же проблемой, которая привела меня на эту страницу, но я нашел решение: Проблема: связанные таблицы при доступе к серверу SQL показывают столбцы datetime2 в виде текста, что имеет много последствий, таких как сравнение дат, сортировка и т. Д.

Решение: конвертируйте datetime2 в sql server в date time, и доступ сразу же покажет столбец как поле даты

Обратите внимание, что поскольку в таблицах уже есть данные, вы не можете просто изменять типы данных, я планирую добавить новые столбцы типа datetime, скопировать данные, удалить столбец orig, переименовать

Как проверить точность: я создал таблицу с 3 столбцами на сервере sql, datetime, datetime2, date, затем я связался с ней из доступа, только datetime показывалось как поле даты в доступе, остальные 2 показывались как текст

Как правило, требуется подтвердить ваши даты, прежде чем мастер увеличения размера. Пользователи склонны вводить "глупые" даты, которые принимаются в полях даты доступа, но вызывают ошибку в SQL Server. Попробуйте запросить в таблицах даты за пределами разумного диапазона, например "между 01.01.1930 и 1/1/2020", и исправьте эти даты перед перезапуском мастера изменения размера.
Я также нашел продукт, который я не использовал, но который выглядит хорошо: http://www.upsizing.co.uk/features_translate.aspx

Другие вопросы по тегам