SQL Server 이전 버전으로부터 네이티브 및 문자 형식 데이터 가져오기

bcp를 사용하여 Microsoft SQL Server 2005 이전 버전에서 네이티브 및 문자 형식 데이터를 가져오려면 -V 스위치를 사용하십시오. -V 스위치를 지정하면 SQL 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 이상 버전에서 내보내기

–V80 스위치를 사용하여 SQL Server 2005 이상 버전에서 데이터를 대량으로 내보내는 경우 네이티브 모드의 nvarchar(max), varchar(max), varbinary(max), XML 및 UDT 데이터는 SQL Server 2005 이상 버전의 기본값인 8바이트 접두사가 아니라 text, image 및 ntext 데이터와 같이 4바이트 접두사를 사용하여 저장됩니다.

SQL Server 7.0 또는 SQL Server 2000에서 내보내기

SQL Server 7.0 또는 SQL Server 2000에서 데이터를 대량 내보내는 경우 고려해야 할 사항은 다음과 같습니다.

  • SQL Server 7.0 및 SQL Server 2000에서 값 0은 길이가 0인 열을 나타냅니다.

  • SQL Server 7.0에서 내보낸 bigint 데이터의 저장 형식은 해당 데이터 파일의 데이터 형식에 따라 다릅니다.

    • 기본 모드이거나 유니코드 네이티브 형식 데이터 파일인 경우 bigint 데이터는 decimal(19,0)로 저장됩니다.

    • 문자 모드이거나 유니코드 문자 형식 데이터 파일인 경우 bigint 데이터는 문자 또는 [-]digits 유니코드 문자열(예: -25688904432)로 저장됩니다.

날짜 값 복사

bcp는 SQL Server 7.0부터 ODBC 대량 복사 API를 사용합니다. 따라서 SQL Server 7.0 또는 이후 버전으로 날짜 값을 가져오려면 bcp는 ODBC 날짜 형식(yyyy-mm-dd hh:mm:ss[.f...])을 사용합니다.

bcp 명령은 datetime 및 smalldatetime 값에 대해 ODBC 기본 형식을 사용하여 문자 형식 데이터 파일을 내보냅니다. 예를 들어 12 Aug 1998이라는 날짜가 포함된 datetime 열은 1998-08-12 00:00:00.000 문자열로 데이터 파일에 대량 복사됩니다.

중요 정보중요

bcp를 사용하여 smalldatetime 필드로 데이터를 가져올 때 초 값이 00.000인지 확인하십시오. 그렇지 않으면 이 작업은 실패합니다. smalldatetime 데이터 형식은 가장 근접한 분 값만 갖습니다. 이 경우 BULK INSERT 및 INSERT ... SELECT * FROM OPENROWSET(BULK...)이 실패하지는 않지만 초 값은 잘립니다.