BLOB 및 OLE 개체
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
OLE DB Driver for SQL Server는 SQL Server ntext, text1, image, varchar(max), nvarchar(max), varbinary(max) 및 xml 데이터 형식에 대한 소비자 액세스를 BLOB(Binary Large Objects)로 지원하기 위해 ISequentialStream 인터페이스를 노출합니다. ISequentialStream에서 Read 메서드를 사용하면 소비자가 많은 양의 데이터를 관리하기 쉬운 청크로 가져올 수 있습니다.
[1]: 레거시 텍스트 열에 UTF-8로 인코딩된 데이터를 삽입하는 데 ISequentialStream 인터페이스를 사용하는 것은 UTF-8을 지원하는 서버로만 제한됩니다. UTF-8을 지원하지 않는 서버를 대상으로 할 때 이 시나리오를 실행하려고 하면 드라이버에서 "선택한 열 형식에 대해 스트리밍이 지원되지 않습니다"라는 오류 메시지가 게시됩니다.
이 기능을 보여 주는 샘플을 보려면 큰 데이터 설정(OLE DB)을 참조하세요.
OLE DB Driver for SQL Server는 소비자가 데이터 수정을 위해 바인딩된 접근자에 인터페이스 포인터를 제공하는 경우 소비자가 구현한 IStorage 인터페이스를 사용할 수 있습니다.
큰 값 데이터 형식의 경우 OLE DB Driver for SQL Server는 IRowset 및 DDL 인터페이스에서 형식 크기 가정을 확인합니다. 최대 크기가 무제한으로 설정된 varchar, nvarchar 및 varbinary 데이터 형식의 열은 열 데이터 형식을 반환하는 스키마 행 집합 및 인터페이스를 통해 ISLONG으로 나타납니다.
SQL Server용 OLE DB 드라이버는 varchar(max), varbinary(max) 및 nvarchar(max) 형식을 각각 DBTYPE_STR, DBTYPE_BYTES 및 DBTYPE_WSTR로 노출합니다.
이러한 형식으로 작업하기 위해 애플리케이션에는 다음 옵션이 있습니다.
형식(DBTYPE_STR, DBTYPE_BYTES, DBTYPE_WSTR)으로 바인딩합니다. 버퍼가 충분히 크지 않은 경우 이전 릴리스에서 이러한 형식과 마찬가지로 잘림이 발생합니다(이제 더 큰 값을 사용할 수 있음).
형식으로 바인딩하고 DBTYPE_BYREF도 지정합니다.
DBTYPE_IUNKNOWN으로 바인딩하고 스트리밍을 사용합니다.
DBTYPE_IUNKNOWN 바인딩된 경우 ISequentialStream 스트림 기능이 사용됩니다. OLE DB Driver for SQL Server는 큰 값 데이터 형식에 대한 DBTYPE_IUNKNOWN으로 출력 매개 변수를 지원합니다. 이는 저장 프로시저가 이러한 데이터 형식을 반환 값으로 반환하고 클라이언트에 DBTYPE_IUNKNOWN 반환되는 시나리오를 지원하기 위한 것입니다.
스토리지 개체 제한 사항
OLE DB Driver for SQL Server는 열려 있는 단일 스토리지 개체만 지원할 수 있습니다. 둘 이상의 스토리지 개체를 열려고 시도합니다(둘 이상의 ISequentialStream 인터페이스 포인터에 대한 참조를 가져오기 위해)는 DBSTATUS_E_CANTCREATE 반환합니다.
SQL Server용 OLE DB 드라이버에서 DBPROP_BLOCKINGSTORAGEOBJECTS 읽기 전용 속성의 기본값은 VARIANT_TRUE입니다. 따라서 스토리지 개체가 활성화되면 스토리지 개체에 있는 메서드를 제외한 일부 메서드가 E_UNEXPECTED 오류와 함께 실패하게 됩니다.
소비자가 구현한 스토리지 개체에서 제공하는 데이터의 길이는 이 스토리지 개체를 참조하는 행 접근자가 생성될 때 SQL Server용 OLE DB 드라이버에 알려져 있어야 합니다. 소비자는 접근자 생성에 사용되는 DBBINDING 구조에 길이 표시자를 바인딩해야 합니다.
행에 큰 데이터 값이 하나 이상 있고 DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM 않은 경우 소비자는 OLE DB Driver for SQL Server 커서 지원 행 집합을 사용하여 행 데이터를 검색하거나 다른 행 값을 검색하기 전에 모든 큰 데이터 값을 처리해야 합니다. DBPROP_ACCESSORDER DBPROPVAL_AO_RANDOM 경우 OLE DB Driver for SQL Server는 모든 xml 데이터 형식을 BLOB(Binary Large Objects)로 캐시하여 순서에 따라 액세스할 수 있습니다.