Миграция таблицы данных Access в SQL Server 2005 - PullRequest
0 голосов
/ 17 апреля 2009

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

Ответы [ 3 ]

0 голосов
/ 18 апреля 2009

Как и решение из marc_s, проверьте значения вне диапазона.

Это может объяснить, почему он увеличен как char, а не datetime ... у вас может быть дата <1753 </p>

Это относится только к SQL Server 2005 и более ранним версиям, SQL Server 2008 имеет дату-время2

0 голосов
/ 18 апреля 2009

Рекомендуется использовать SQL Server Migration Assistant (SSMA) вместо мастера изменения размера, встроенного в MS Access. Определенно менее болезненный.

0 голосов
/ 18 апреля 2009

Поля типа CHAR (x) в SQL Server будут дополнены пробелами до их фиксированной длины, например если у вас есть CHAR (20), и у вас есть дата, такая как «2009-04-20», поле действительно будет содержать «2009-04-20», и это может вызвать проблемы при преобразовании в datetime.

Кроме того, если ваше поле CHAR полностью пустое, оно также не сможет преобразоваться в допустимое время даты.

Решения:

a) Вы можете изменить тип данных для ваших столбцов на VARCHAR (x) и таким образом избавиться от наиболее вероятного ненужного заполнения:

ALTER TABLE YourTable
  ALTER COLUMN YourColumnName VARCHAR(x) 

b) Вы можете проверить наличие пустых значений поля CHAR (x) и не преобразовывать их (или выбрать для них значение даты-времени по умолчанию)

c) Вы можете обрезать поля CHAR (x), чтобы удалить ненужные отступы:

CONVERT(LTRIM(RTRIM(YourFieldName)), ......)
...