SQL Server XML 대량 로드 개체 모델(SQLXML 4.0)

적용 대상: SQL Server Azure SQL 데이터베이스

Microsoft SQL Server XML 대량 로드 개체 모델은 SQLXMLBulkLoad 개체로 구성됩니다. 이 개체는 다음 메서드 및 속성을 지원합니다.

메서드

Execute
매개 변수로 제공된 스키마 파일 및 데이터 파일(또는 스트림)을 사용하여 데이터를 대량 로드합니다.

속성

Bulkload
대량 로드를 수행할지 여부를 지정합니다. 이 속성은 스키마만 생성하고(다음에 오는 SchemaGen, SGDropTables 및 SGUseID 속성 참조) 대량 로드를 수행하지 않으려는 경우에 유용합니다. 이 속성은 부울 속성입니다. 이 속성이 TRUE로 설정된 경우 XML 대량 로드가 실행되고 FALSE로 설정된 경우 XML 대량 로드가 실행되지 않습니다.

기본값은 TRUE입니다.

CheckConstraints
XML 대량 로드에서 열에 데이터를 삽입할 때 열에 지정된 제약 조건(예: 열 간의 기본 키/외래 키 관계로 인한 제약 조건)을 검사할지 여부를 지정합니다. 이 속성은 부울 속성입니다.

이 속성이 TRUE로 설정된 경우 XML 대량 로드에서 삽입되는 각 값에 대해 제약 조건을 검사하며 제약 조건이 위반된 경우 오류를 반환합니다.

참고

이 속성을 FALSE로 두려면 대상 테이블에 대한 ALTER TABLE 권한이 있어야 합니다. 자세한 내용은 ALTER TABLE(Transact-SQL)을 참조하세요.

기본값은 FALSE입니다. 이 속성이 FALSE로 설정된 경우 XML 대량 로드에서 삽입 작업 중 제약 조건을 무시합니다. 현재 구현에서는 매핑 스키마에서 기본 키 및 외래 키 관계의 순서로 테이블을 정의해야 합니다. 즉, 외래 키가 있는 대응되는 테이블을 정의하기 전에 기본 키가 있는 테이블을 정의해야 합니다. 그렇지 않으면 XML 대량 로드가 실패합니다.

ID 전파가 수행 중인 경우에는 이 옵션이 적용되지 않고 제약 조건 검사가 설정된 상태로 유지됩니다. 이는 KeepIdentity=False이며, 부모가 ID 필드이고 자식이 생성될 때 자식에 값이 지정되는 관계가 정의된 경우에 발생합니다.

ConnectionCommand
XML 대량 로드에서 사용해야 하는 기존 연결 개체(예: ADO 또는 ICommand 명령 개체)를 식별합니다. ConnectionString 속성을 사용하여 연결 문자열을 지정하는 대신 ConnectionCommand 속성을 사용할 수 있습니다. ConnectionCommand를 사용하는 경우 Transaction 속성을 TRUE로 설정해야 합니다.

ConnectionString 및 ConnectionCommand 속성을 모두 사용하는 경우 XML 대량 로드는 마지막으로 지정된 속성을 사용합니다.

기본값은 NULL입니다.

ConnectionString
데이터베이스 인스턴스에 대한 연결을 설정하는 데 필요한 정보를 제공하는 OLE DB 연결 문자열을 식별합니다. ConnectionString 및 ConnectionCommand 속성을 모두 사용하는 경우 XML 대량 로드는 마지막으로 지정된 속성을 사용합니다.

기본값은 NULL입니다.

ErrorLogFile
XML 대량 로드에서 오류 및 메시지를 기록하는 파일 이름을 지정합니다. 기본값은 빈 문자열이며 이 경우 로깅이 수행되지 않습니다.

FireTriggers
대상 테이블에 정의된 트리거를 대량 로드 작업 중 실행할지 여부를 지정합니다. 기본값은 FALSE입니다.

TRUE로 설정된 경우 삽입 작업 중 트리거가 실행됩니다.

참고

이 속성을 FALSE로 두려면 대상 테이블에 대한 ALTER TABLE 권한이 있어야 합니다. 자세한 내용은 ALTER TABLE(Transact-SQL)을 참조하세요.

ID 전파가 수행 중인 경우에는 이 옵션이 적용되지 않고 트리거가 설정된 상태로 유지됩니다. 이는 KeepIdentity=False이며, 부모가 ID 필드이고 자식이 생성될 때 자식에 값이 지정되는 관계가 정의된 경우에 발생합니다.

ForceTableLock
XML 대량 로드에서 대량 로드 작업이 진행되는 동안 데이터를 복사할 테이블을 잠글지 여부를 지정합니다. 이 속성은 부울 속성입니다. 이 속성이 TRUE로 설정된 경우 XML 대량 로드에서 대량 로드 작업이 진행되는 동안 테이블 잠금을 확보합니다. 이 속성이 FALSE로 설정된 경우에는 XML 대량 로드에서 테이블에 레코드를 삽입할 때마다 테이블 잠금을 확보합니다.

기본값은 FALSE입니다.

IgnoreDuplicateKeys
중복 값을 키 열에 삽입하려고 할 때 수행할 작업을 지정합니다. 이 속성이 TRUE로 설정되고 키 열에 중복 값이 있는 레코드를 삽입하려고 하면 SQL Server 해당 레코드를 삽입하지 않습니다. 해당 레코드 이후의 레코드는 삽입하므로 대량 로드 작업이 실패하지 않습니다. 이 속성이 FALSE로 설정된 경우 중복 값을 키 열에 삽입하려고 하면 대량 로드가 실패합니다.

IgnoreDuplicateKeys 속성이 TRUE로 설정되면 테이블에 삽입된 모든 레코드에 대해 COMMIT 문이 실행됩니다. 이로 인해 성능이 저하됩니다. 트랜잭션 동작이 파일을 사용하여 구현되기 때문에 Transaction 속성이 FALSE로 설정된 경우에만 속성을 TRUE로 설정할 수 있습니다.

기본값은 FALSE입니다.

KeepIdentity
원본 파일의 ID 유형 열에 대한 값을 처리하는 방법을 지정합니다. 이 속성은 부울 속성입니다. 이 속성이 TRUE로 설정된 경우 XML 대량 로드에서 원본 파일에 지정된 값을 ID 열에 할당합니다. 이 속성이 FALSE로 설정된 경우에는 대량 로드 작업에서 원본에 지정된 ID 열 값을 무시합니다. 이 경우 SQL Server ID 열에 값을 할당합니다.

대량 로드에 SQL Server 생성된 값이 저장되는 ID 열을 참조하는 외래 키인 열이 포함된 경우 대량 로드는 이러한 ID 값을 외래 키 열에 적절하게 전파합니다.

이 속성 값은 대량 로드에 포함된 모든 열에 적용됩니다. 기본값은 TRUE입니다.

참고

이 속성을 TRUE로 두려면 대상 테이블에 대한 ALTER TABLE 권한이 있어야 합니다. 그렇지 않은 경우에는 값을 FALSE로 설정해야 합니다. 자세한 내용은 ALTER TABLE(Transact-SQL)을 참조하세요.

KeepNulls
XML 문서에서 해당 특성이나 자식 요소가 없는 열에 사용할 값을 지정합니다. 이 속성은 부울 속성입니다. 이 속성이 TRUE로 설정된 경우 XML 대량 로드에서 서버에 설정된 열의 기본값(있는 경우)이 아닌 null 값을 열에 할당합니다. 이 속성 값은 대량 로드에 포함된 모든 열에 적용됩니다.

기본값은 FALSE입니다.

SchemaGen
대량 로드 작업을 수행하기 전에 필요한 테이블을 만들지 여부를 지정합니다. 이 속성은 부울 속성입니다. 이 속성이 TRUE로 설정된 경우 매핑 스키마에 식별된 테이블이 생성됩니다. 이 경우 데이터베이스가 있어야 합니다. 데이터베이스에 하나 이상의 테이블이 이미 있는 경우 SGDropTables 속성은 이러한 기존 테이블을 삭제하고 다시 만들 것인지 여부를 결정합니다.

SchemaGen 속성의 기본값은 FALSE입니다. SchemaGen은 새로 만든 테이블에 PRIMARY KEY 제약 조건을 만들지 않습니다. 그러나 SchemaGen은 매핑 스키마에서 일치하는 sql:relationshipsql:key-fields 주석을 찾을 수 있고 키 필드가 단일 열로 구성된 경우 데이터베이스에 FOREIGN KEY 제약 조건을 만듭니다.

SchemaGen 속성을 TRUE로 설정하면 XML 대량 로드가 다음을 수행합니다.

  • 요소 및 특성 이름을 사용하여 필요한 테이블을 만듭니다. 따라서 스키마의 요소 및 특성 이름에 SQL Server 예약 단어를 사용하지 않는 것이 중요합니다.

  • xml 데이터 형식 형식sql:overflow-field를 사용하여 지정된 열에 대한 오버플로 데이터를 반환합니다.

SGDropTables
기존 테이블을 삭제하고 다시 만들지 여부를 지정합니다. SchemaGen 속성이 TRUE로 설정된 경우 이 속성을 사용합니다. SGDropTables가 FALSE이면 기존 테이블이 유지됩니다. 이 속성이 TRUE이면 기존 테이블이 삭제되고 다시 생성됩니다.

기본값은 FALSE입니다.

SGUseID
테이블을 만들 때 ID 형식으로 식별되는 매핑 스키마의 특성을 PRIMARY KEY 제약 조건을 만드는 데 사용할 수 있는지 여부를 지정합니다. SchemaGen 속성이 TRUE로 설정된 경우 이 속성을 사용합니다. SGUseID가 TRUE인 경우 SchemaGen 유틸리티는 dt:type="id" 가 기본 키 열로 지정된 특성을 사용하고 테이블을 만들 때 적절한 PRIMARY KEY 제약 조건을 추가합니다.

기본값은 FALSE입니다.

TempFilePath
XML 대량 로드에서 트랜잭션된 대량 로드에 사용할 임시 파일을 만들 파일 경로를 지정합니다. 이 속성은 Transaction 속성이 TRUE로 설정된 경우에만 유용합니다. XML 대량 로드에 사용되는 SQL Server 계정이 이 경로에 액세스할 수 있는지 확인해야 합니다. 이 속성이 설정되지 않은 경우 XML 대량 로드에서는 임시 파일을 TEMP 환경 변수에 지정된 위치에 저장합니다.

트랜잭션
대량 로드를 트랜잭션으로 수행할지 여부를 지정합니다. 트랜잭션으로 수행하면 대량 로드가 실패할 경우 롤백이 수행됩니다. 이 속성은 부울 속성입니다. 이 속성이 TRUE로 설정된 경우 대량 로드가 트랜잭션 컨텍스트에서 수행됩니다. TempFilePath 속성은 Transaction이 TRUE로 설정된 경우에만 유용합니다.

참고

이진 데이터(예: bin.hex, bin.base64 XML 데이터 형식을 이진, 이미지 SQL Server 데이터 형식)로 로드하는 경우 Transaction 속성을 FALSE로 설정해야 합니다.

기본값은 FALSE입니다.

XMLFragment
원본 데이터가 XML 조각인지 여부를 지정합니다. XML 조각은 단일 최상위(루트) 요소가 없는 XML 문서입니다. 이 속성은 부울 속성입니다. 원본 파일이 XML 조각으로 구성되어 있으면 이 속성을 TRUE로 설정해야 합니다.

기본값은 FALSE입니다.