BINARY BASE64 옵션 사용

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

쿼리에서 BINARY BASE64 옵션을 지정하면 이진 데이터가 base64 인코딩 형식으로 반환됩니다.

이진 BASE64 옵션이 쿼리에 지정되지 않은 경우 AUTO 모드는 기본적으로 이진 데이터의 URL 인코딩을 지원합니다. 데이터베이스의 가상 루트에 대한 상대 URL에 대한 참조가 반환됩니다. 이 참조는 쿼리가 실행된 데이터베이스에 대한 것입니다. 반환된 참조를 사용하여 후속 작업에서 실제 이진 데이터에 액세스할 수 있습니다. 이 액세스는 SQLXML ISAPI dbobject 쿼리를 사용하여 수행됩니다. 쿼리는 이미지를 식별하기에 충분한 정보를 제공해야 합니다. 이러한 정보에는 기본 키 열이 포함될 수 있습니다.

열 별칭

뷰를 쿼리하고 FOR XML AUTO 모드를 사용할 때는 이진 열에 별칭을 사용하지 마세요. 별칭을 사용하는 경우 별칭은 이진 데이터의 URL 인코딩에 반환됩니다. 후속 작업에서 별칭은 의미가 없습니다. 의미 없는 별칭 및 URL 인코딩을 사용하여 이미지를 검색할 수 없습니다.

BLOB으로 캐스트

SELECT 쿼리에서 열을 BLOB(Binary Large Object)로 캐스팅하면 열이 임시 엔터티로 만들어집니다. 일시적이기 때문에 BLOB은 연결된 테이블 이름과 열 이름을 잃습니다. 이 캐스트는 시스템에서 XML 계층 구조에 이 값을 배치할 위치를 모르기 때문에 AUTO 모드 쿼리에서 오류를 생성합니다.

예를 들어, 다음 테이블의 한 행을 살펴봅니다.

CREATE TABLE MyTable (Col1 int PRIMARY KEY, Col2 binary)
INSERT INTO MyTable VALUES (1, 0x7);

다음 쿼리는 BLOB(Binary Large Object)로 캐스팅하여 발생하는 오류를 생성합니다.

SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO;

이 솔루션은 FOR XML 절에 BINARY BASE64 옵션을 추가합니다. 캐스팅을 제거하면 쿼리가 좋은 결과를 생성합니다.

SELECT Col1,
CAST(Col2 as image) as Col2
FROM MyTable
FOR XML AUTO, BINARY BASE64;

다음과 같은 좋은 결과를 기대합니다.

<MyTable Col1="1" Col2="Bw==" />

참고 항목

FOR XML에서 AUTO 모드 사용