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

bcp를 사용하여 Microsoft SQL Server 2000 이전 버전에서 네이티브 및 문자 형식 데이터를 가져오려면 -V 스위치를 사용하십시오. -V 스위치를 지정하면 Microsoft SQL Server 2005 가 이전 버전 Microsoft SQL Server 의 데이터 형식을 사용하며 데이터 파일 형식이 이전 버전의 형식과 동일하게 됩니다.

[!참고] -V 스위치는 Microsoft SQL Server 7.0의 -6 스위치 기능을 확장한 것입니다. -6을 사용하는 방법은 -V60 또는 -V65와 동일합니다. SQL Server 에서 아직 -6 스위치를 지원하지만 나중 버전에서는 이 스위치는 더 이상 지원하지 않을 것입니다. 따라서 -V를 사용하는 것이 좋습니다.

어떤 버전의 SQL Server 데이터 파일인지 지정하려면 다음과 같이 -V 스위치를 사용합니다.

SQL Server 버전 한정자

Microsoft SQL Server 6.0

-V60

Microsoft SQL Server 6.5

-V65

SQL Server 7.0

-V70

SQL Server 2000

-V80

SQL Server 2005 데이터 형식 해석

SQL Server 2005 에는 몇 가지 새로운 형식에 대한 지원이 추가되었습니다. SQL Server 2005 의 새 데이터 형식을 SQL Server 2000 또는 이전 버전으로 가져오려면 이전 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, imagentext 데이터와 같이 4바이트 접두사를 사용하여 저장됩니다.

SQL Server 7.0 또는 이전 버전에서 내보내기

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

  • SQL Server 7.0, SQL Server 6.5 또는 SQL Server 6.0에서 내보낸 bigint 데이터의 저장 형식은 해당 데이터 파일의 데이터 형식에 따라 다릅니다.
    • 네이티브 모드이거나 유니코드 네이티브 형식 데이터 파일인 경우 bigint 데이터는 **decimal(19,0)**로 저장됩니다.
    • 문자 모드이거나 유니코드 문자 형식 데이터 파일인 경우 bigint 데이터는 문자 또는 [-]digits 유니코드 문자열(예: -25688904432)로 저장됩니다.
  • char 또는 varchar 열이 있는 테이블인 경우 SQL Server 6.0 또는 SQL Server 6.5에서 내보낼 때 bcp는 데이터의 길이와 동등한 각 데이터 파일 필드에 1바이트 접두사를 추가합니다. numeric 데이터가 있는 테이블인 경우 SQL Server 네이티브 형식으로 데이터 파일에 이 정보가 기록됩니다.
  • SQL Server 7.0 및 SQL Server 2000 에서 값 0은 길이가 0인 열을 나타냅니다.

SQL Server 6.5 또는 6.0에서 내보내기

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

  • SQL Server 6.5 또는 이전 버전에서 bcp는 Null 값을 길이가 0인 값으로 나타내지만 이제 Null은 길이 값 -1로 저장됩니다.
  • 또한 SQL Server 6.5 및 이전 버전이 Null을 허용하는 bit 데이터를 지원하지 않기 때문에 bit 열의 Null 값은 0으로 작성됩니다.
  • bcp 유틸리티는 datetime 또는 smalldatetime 데이터에 대해 SQL Server 6.0 또는 SQL Server 6.5 날짜 형식을 생성하지 않습니다. 날짜는 항상 ODBC 형식으로 작성됩니다.
  • -V65 스위치를 사용하면 다중 날짜 변환을 지원하는 데 필요한 오버헤드 때문에 성능에 영향을 받습니다.
  • 데이터 값은 SQL Server 6.5 또는 이전 버전에서 다릅니다. 자세한 내용은 다음 섹션인 "날짜 값 복사"를 참조하십시오.

날짜 값 복사

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

반면 SQL Server 6.5 또는 이전 버전에서는 bcp가 DB-Library 대량 복사 API 및 DB-Library 날짜 형식을 사용합니다. SQL Server 6.5 또는 이전 버전에서 SQL Server 7.0 및 이후 버전으로 날짜 형식을 내보내려면 -V65 스위치를 사용하십시오. -V65를 지정하면 bcp 명령은 우선 ODBC 날짜 형식을 사용하여 데이터 파일의 날짜 값 변환을 시도합니다. 이 변환이 실패하면 bcp는 DB-Library 형식을 사용하여 날짜 값 변환을 시도합니다.

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

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

-V65 스위치를 사용하면 다중 날짜 변환을 지원하는 데 필요한 오버헤드 때문에 성능에 영향을 받습니다.

참고 항목

개념

데이터를 가져오거나 내보내기 위한 데이터 형식

관련 자료

bcp 유틸리티
BULK INSERT(Transact-SQL)
OPENROWSET(Transact-SQL)
데이터 형식(Transact-SQL)
SQL Server 2005 데이터베이스 엔진의 이전 버전과의 호환성
CAST 및 CONVERT(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기