Импорт данных в собственном и символьном формате из предыдущих версий SQL Server

Чтобы использовать программу bcp для импорта данных собственного и символьного форматов из Microsoft SQL Server 2005 и более ранних версий, используйте параметр -V. При указании параметра -VSQL Server 2008 R2 использует типы данных из предыдущих версий Microsoft SQL Server, формат файла данных будет таким же, как в этой версии.

Чтобы указать, относится ли файл данных к уровню одной из ранних версий SQL Server, используйте ключ -V следующим образом.

Версия SQL Server

Квалификатор

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005

-V90

Интерпретация типов данных SQL Server

В SQL Server 2005 и более поздних версиях была добавлена поддержка некоторых новых типов данных. Если нужно импортировать новый тип данных в более раннюю версию, эти данные должны быть сохранены в формате, который могут прочитать старые клиенты bcp. Следующая таблица содержит сведения о том, как новые типы данных в SQL Server 2005 преобразуются для совместимости с более ранними версиями SQL Server.

Новые типы данных в SQL Server 2005

Совместимые типы данных в версии 6x

Совместимые типы данных в версии 70

Совместимые типы данных в версии 80

bigint

decimal

decimal

*

sql_variant

text

nvarchar(4000)

*

varchar(max)

text

text

text

nvarchar(max)

ntext

ntext

ntext

varbinary(max)

image

image

image

XML

ntext

ntext

ntext

UDT1

image

image

image

* Этот тип поддерживается изначально.

1 UDT обозначает определяемый пользователем тип.

Экспорт из SQL Server 2005 и более поздних версий

При массовом экспорте данных из SQL Server 2005 или более поздних версий с использованием ключа -V80 данные типов nvarchar(max), varchar(max), varbinary(max), XML и UDT в собственном режиме хранятся с 4-байтовым префиксом, как данные text, image и ntext, вместо 8-байтного префикса, установленного по умолчанию для SQL Server 2005 или более поздних версий.

Экспорт из SQL Server 7.0 или SQL Server 2000

При массовом экспорте данных из SQL Server 7.0 или SQL Server 2000 нужно учитывать следующее.

  • В SQL Server 7.0 и SQL Server 2000 значение 0 представляет столбец нулевой длины.

  • Формат хранения данных типа bigint, экспортированных из SQL Server 7.0, зависит от формата данных в файле данных:

    • В собственном режиме или в файле данных собственного формата Юникод, данные bigint хранятся в виде decimal(19,0).

    • В символьном режиме или в файле данных символьного формата Юникод данные bigint хранятся как символ или строка Юникода вида [-]digits, например –25688904432.

Копирование значений данных

Начиная с SQL Server 7.0, программа bcp использует API-интерфейс массового копирования ODBC. Поэтому, чтобы импортировать значения данных в SQL Server 7.0 и более ранние версии, программа bcp использует формат данных ODBC (гггг-мм-дд чч:мм:сс[.f...]).

Команда bcp экспортирует данные символьного формата с помощью формата ODBC по умолчанию для значений datetime и smalldatetime. Например, столбец типа datetime, содержащий дату 12 Aug 1998, копируется с помощью массового копирования в файл данных в качестве строки символов 1998-08-12 00:00:00.000.

Важное примечаниеВажно!

При импорте данных в поле smalldatetime посредством программы bcp нужно убедиться, что значение секунд равно 00.000; в противном случае произойдет ошибка. Тип данных smalldatetime содержит значения только с точностью до минуты. В данном случае инструкции BULK INSERT и INSERT ... SELECT * FROM OPENROWSET(BULK...) не приведут к ошибке, но усекут значение секунд.