데이터 대량 가져오기에 대한 기본 지침
bcp 명령, BULK INSERT 문 또는 OPENROWSET(BULK) 함수를 사용하여 데이터 파일의 데이터만 대량으로 가져올 수 있습니다.
[!참고]
텍스트 파일이 아닌 개체의 데이터를 대량으로 가져오는 사용자 지정 응용 프로그램을 작성할 수 있습니다. 메모리 버퍼에서 데이터를 대량으로 가져오려면 SQL Server Native Client(ODBC) API(응용 프로그램 프로그래밍 인터페이스) 또는 OLE DB IRowsetFastLoad 인터페이스에 bcp 확장을 사용합니다. C# 데이터 테이블에서 데이터를 대량으로 가져오려면 ADO.NET 대량 복사 API인 SqlBulkCopy를 사용합니다.
[!참고]
원격 테이블로 데이터를 대량으로 가져올 수 없습니다.
데이터 파일에서 Microsoft SQL Server 인스턴스로 데이터를 대량으로 가져올 경우 다음 지침을 따르십시오.
사용자 계정에 대해 필요한 권한 가져오기
bcp 유틸리티, BULK INSERT 문, 또는 INSERT ... SELECT * FROM OPENROWSET(BULK...) 문을 사용하는 사용자 계정에는 테이블에 대해 필요한 권한(테이블 소유자가 할당)이 있어야 합니다. 각 메서드에 필요한 권한에 대한 자세한 내용은 bcp 유틸리티, OPENROWSET(Transact-SQL) 및 BULK INSERT(Transact-SQL)를 참조하십시오.
대량 로그 복구 모델 사용
이 지침은 전체 복구 모델을 사용하는 데이터베이스에 대한 내용입니다. 대량 로그 복구 모델은 인덱싱되지 않은 테이블(힙)로 대량 작업을 수행할 때 유용합니다. 대량 로그 복구는 로그 행 삽입을 수행하지 않으므로 대량 로그 복구를 사용하면 트랜잭션 로그의 공간 부족 문제를 방지할 수 있습니다. 대량 로그 복구 모델에 대한 자세한 내용은 대량 로그 복구 모델에서의 백업을 참조하십시오.
대량 가져오기 작업을 수행하기 바로 전에 대량 로그 복구 모델을 사용하여 데이터베이스를 변경하는 것이 좋습니다. 변경한 직후에는 데이터베이스를 전체 복구 모델로 다시 설정해야 합니다. 자세한 내용은 전체 또는 대량 로그 복구 모델에서 전환을 참조하십시오.
[!참고]
대량 가져오기 작업 동안의 로깅을 최소화하는 방법은 대량 가져오기의 최소 로깅을 위한 선행 조건을 참조하십시오.
데이터를 대량으로 가져온 후 백업
단순 복구 모델을 사용하는 데이터베이스의 경우 대량 가져오기 작업이 완료된 후 전체 또는 차등 백업을 수행하는 것이 좋습니다. 자세한 내용은 SQL Server 데이터베이스의 전체 및 차등 백업 만들기를 참조하십시오.
대량 로그 복구 모델 또는 전체 복구 모델의 경우에는 로그 백업으로 충분합니다. 자세한 내용은 트랜잭션 로그 백업 만들기를 참조하십시오.
대규모 대량 가져오기의 성능 향상을 위해 테이블 인덱스 삭제
이 지침은 이미 테이블에 있는 데이터에 비해 많은 양의 데이터를 가져오는 경우에 대한 내용입니다. 이 경우 대량 가져오기 작업을 수행하기 전에 테이블의 인덱스를 삭제하면 성능이 매우 향상됩니다.
[!참고]
이미 테이블에 있는 데이터에 비해 적은 양의 데이터를 로드하는 경우에는 인덱스를 삭제하면 성능이 저하됩니다. 인덱스를 다시 작성하는 데 필요한 시간이 대량 가져오기 작업 동안 절약된 시간보다 길 수도 있습니다.
자세한 내용은 대량 가져오기 성능 최적화를 참조하십시오.
데이터 파일의 숨겨진 문자 찾기 및 제거
주로 데이터 파일의 끝 부분에 있는 숨겨진 문자는 다양한 유틸리티와 텍스트 편집기를 사용하여 표시할 수 있습니다. 대량 가져오기 작업 동안 ASCII 데이터 파일에 있는 숨겨진 문자가 문제를 일으켜 "예기치 않은 Null 발견" 오류가 발생할 수 있습니다. 이 경우 숨겨진 문자를 모두 찾아서 제거하면 이 문제가 해결됩니다.