SQLXML 4.0 SP1의 새로운 기능
적용 대상: SQL Server Azure SQL Database
Microsoft SQLXML 4.0 SP1에는 다양한 업데이트 및 향상된 기능이 포함되어 있습니다. 이 항목에서는 업데이트를 요약하고 사용 가능한 경우 더욱 자세한 정보에 대한 링크를 제공합니다. SQLXML 4.0 SP1에서는 SQL Server 2008(10.0.x)에 도입된 새로운 데이터 형식을 지원하기 위한 향상된 기능을 추가로 제공합니다. 이 항목에는 다음 주제가 포함되어 있습니다.
SQLXML 4.0 SP1 설치
병렬 설치 문제
SQLXML 4.0 및 MSXML
SQLXML 4.0 재배포
SQL Server Native Client에 대한 지원
SQL Server 2005(9.x)에 도입된 데이터 형식에 대한 지원
SQLXML 4.0에 대한 XML 대량 로드 변경 내용
SQLXML 4.0에 대한 레지스트리 키 변경 내용
마이그레이션 문제
SQLXML 4.0 SP1 설치
SQL Server 2008(10.0.x) 이전에는 SQLXML 4.0이 SQL Server와 함께 릴리스되었으며 SQL Server Express를 제외한 모든 SQL Server 버전에서 기본 설치의 일부였습니다. SQL Server 2008(10.0.x)부터는 최신 버전의 SQLXML(SQLXML 4.0 SP1)이 더 이상 SQL Server에 포함되지 않습니다. SQLXML 4.0 SP1을 설치하려면 SQLXML 4.0 SP1용 설치 위치에서 다운로드합니다.
SQLXML 4.0 SP1 파일은 다음 위치에 설치됩니다.
%PROGRAMFILES%\SQLXML 4.0\
참고 항목
SQLXML 4.0에 대한 모든 적절한 레지스트리 설정은 설치 프로세스의 일부로 만들어집니다.
64비트 Windows 운영 체제의 Windows on Windows(WOW64)에서 32비트 SQLXML 애플리케이션을 실행하려면 sqlxml4.msi라는 64비트 SQLXML 4.0 SP1 패키지를 실행해야 합니다. 이 패키지는 다운로드 센터에서 찾을 수 있습니다.
SQLXML 4.0 SP1 제거
공유 레지스트리 키는 SQLXML 3.0 SP3, SQLXML 4.0 및 SQLXML 4.0 SP1 사이에 존재합니다. SQLXML 3.0 SP3가 포함된 동일한 컴퓨터에서 이후 버전의 SQLXML을 제거하는 경우 SQLXML 3.0 SP3을 다시 설치해야 할 수 있습니다.
병렬 설치 문제
SQLXML 4.0의 설치 프로세스에서는 이전 버전의 SQLXML에서 설치한 파일을 제거하지 않습니다. 따라서 컴퓨터에 SQLXML의 여러 다른 버전 고유의 설치에 대한 DLL을 가질 수 있습니다. 이러한 함께 설치를 실행할 수 있습니다. SQLXML 4.0에는 버전 독립 PROGID와 버전 종속 PROGID가 모두 포함됩니다. 모든 프로덕션 애플리케이션은 버전 종속 PROGID를 사용해야 합니다.
SQLXML 4.0 SP1 및 MSXML
SQLXML 4.0은 MSXML을 설치하지 않습니다. SQLXML 4.0은 MSXML 6.0을 사용하며 이는 SQL Server 2005(9.x) 이상 설치의 일부로 설치됩니다.
SQLXML 4.0 SP1 재배포
재배포 가능 설치 관리자 패키지를 사용하여 SQLXML 4.0 SP1을 배포할 수 있습니다. 사용자에게 단일 설치로 보이는 다중 패키지를 설치하는 한 가지 방법은 chainer 및 부트스트래퍼 기술을 사용하는 것입니다. 자세한 내용은 Visual Studio 2005용 사용자 지정 부트스트래퍼 패키지 작성 및 사용자 지정 필수 구성 요소 추가를 참조하세요.
애플리케이션이 개발된 플랫폼이 아닌 다른 플랫폼을 대상으로 하는 경우 Microsoft 다운로드 센터에서 x64, Itanium 및 x86용 sqlncli.msi 버전을 다운로드할 수 있습니다.
MSXML 6.0(msxml6.msi)에 대한 별도의 재배포 설치 프로그램도 있습니다. 다음 위치의 SQL Server 설치 CD에서 찾을 수 있습니다.
%CD%\Setup\
이러한 설치 파일을 사용하여 CD에서 직접 MSXML 6.0을 설치할 수 있습니다. 사용자 지정 애플리케이션과 함께 MSXML 6.0 및 SQLXML 4.0 SP1을 자유롭게 재배포하는 데 설치 파일을 사용할 수도 있습니다.
또한 애플리케이션에서 데이터 공급자로 사용하는 경우 SQL Server Native Client를 재배포해야 합니다. 자세한 내용은 SQL Server Native Client 설치를 참조하세요.
SQL Server Native Client에 대한 지원
SQLXML 4.0은 SQLOLEDB 및 SQL Server Native Client 공급자를 모두 지원합니다. SQL Server Native Client는 SQL Server 2008(10.0.x)의 날짜, 시간, DateTime2 및 dateTimeOffset 데이터 형식 같이 서버에 제공되는 새 데이터 형식을 지원하도록 개발되고 SQL Server Native Client에서 지원하기 때문에 동일한 버전의 SQL Server Native Client 공급자와 SQL Server를 사용하는 것이 좋습니다.
참고 항목
SQL Server Native Client가 SQL Server 2022(16.x)에서 제거되었습니다.
SQL Server Native Client는 SQL Server 2005(9.x)에 도입된 데이터 액세스 기술입니다. 또한 SQLOLEDB 공급자와 SQLODBC 드라이버를 하나의 네이티브 DLL(동적 연결 라이브러리)으로 결합하면서 동시에 MDAC(Microsoft Data Access Components)와는 구분 및 구별되는 새로운 기능을 제공합니다.
SQL Server Native Client를 사용하여 새 애플리케이션을 만들거나 SQL Server에 도입된 MDAC 및 Microsoft Windows의 SQLOLEDB 및 SQLODBC에서 지원되지 않는 기능을 이용해야 하는 기존 애플리케이션을 개선할 수 있습니다. 예를 들어 xml 데이터 형식을 사용하려면 FOR XML 같은 클라이언트 쪽 SQLXML 기능에 SQL Server Native Client가 필요합니다. 자세한 내용은 클라이언트 쪽 XML 서식 지정(SQLXML 4.0), ADO를 사용하여 SQLXML 4.0 쿼리 실행 및 SQL Server Native Client 프로그래밍을 참조하세요.
참고 항목
SQLXML 4.0은 SQLXML 3.0과 완전히 호환되지 않습니다. 일부 버그 수정 및 기타 기능 변경, 특히 SQLXML ISAPI 지원 제거로 인해 SQLXML 4.0에서는 IIS 가상 디렉터리를 사용할 수 없습니다. 대부분의 애플리케이션은 약간만 수정해도 실행되지만 SQLXML 4.0과 함께 프로덕션에 배치하기 전에 테스트해야 합니다.
SQL Server 2005 및 SQL Server 2008에 도입된 데이터 형식에 대한 지원
SQL Server 2005(9.x)는 xml 데이터 형식을 도입했으며 SQLXML 4.0은 xml 데이터 형식을 지원합니다. 자세한 내용은 SQLXML 4.0의 xml 데이터 형식 지원을 참조 하세요.
XML 보기를 매핑하거나 XML을 대량 로드하거나 XML updategram을 실행할 때 SQLXML에서 xml 데이터 형식을 사용하는 방법에 대한 예제는 다음 항목에서 제공하는 예제를 참조하세요.
SQL Server 2008(10.0.x)는 Date, Time, DateTime2, 및 DateTimeOffset데이터 형식을 도입했습니다. SQLXML 4.0 SP1은 SQL Server 2012(11.x)에 제공되는 SQLNCLI11(SQL Server Native Client OLE DB Provider)과 함께 사용할 때 이러한 네 가지 새 데이터 형식을 기본 제공 스칼라 형식으로 사용하도록 설정합니다.
Important
SNAC(SQL Server Native Client)는 다음과 함께 제공되지 않습니다.
- SQL Server 2022(16.x) 이상 버전
- SQL Server Management Studio 19 이상 버전
SQL Server Native Client(SQLNCLI 또는 SQLNCLI11)와 레거시 Microsoft OLE DB Provider for SQL Server(SQLOLEDB)는 새로운 응용 프로그램 개발에 권장되지 않습니다.
새 프로젝트의 경우 다음 드라이버 중 하나를 사용합니다.
SQL Server 데이터베이스 엔진(버전 2012부터 2019까지)의 구성 요소로 제공되는 SQLNCLI의 경우 이 수명 주기 예외 지원을 참조하세요.
SQLXML 4.0 SP1에 대한 XML 대량 로드 변경 내용
SQLXML 4.0의 경우 xml 데이터 형식을 사용하여 SchemaGen 오버플로 필드를 만듭니다. 자세한 내용은 SQL Server XML 대량 로드 개체 모델을 참조하세요.
이전에 Microsoft Visual Basic 애플리케이션을 만들었으며 SQLXML 4.0을 사용하려는 경우 Xblkld4.dll을 참조하여 애플리케이션을 다시 컴파일해야 합니다.
Visual Basic Scripting Edition 애플리케이션의 경우 사용하려는 DLL을 등록해야 합니다. 다음 예제에서 버전 독립 PROGID를 지정하는 경우 애플리케이션은 마지막으로 등록된 DLL에 따라 달라집니다.
set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")
참고 항목
버전 종속 PROGID는 SQLXMLBulkLoad.SQLXMLBulkLoad.4.0입니다.
SQLXML 4.0에 대한 레지스트리 키 변경 내용
SQLXML 4.0에서는 이전 버전의 레지스트리 키가 다음으로 변경되었습니다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\TemplateCacheSize
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\SchemaCacheSize
이러한 키를 SQLXML 4.0에 적용하려면 설정을 변경해야 합니다.
또한 SQLXML 4.0에는 다음 레지스트리 키가 도입됩니다.
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\ReportErrorsWithSQLInfo
기본값으로 SQLXML 4.0은 이전 버전의 SQLXML과 마찬가지로 높은 수준의 SQLXML 오류 대신 OLE DB 및 SQL Server에서 제공하는 네이티브 오류 정보를 반환합니다. 이 동작을 원하지 않는 경우 DWORD 형식의 이 레지스트리 키 값(기본값 1)을 0으로 설정해야 합니다.
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces
기본적으로 SQLXML은 중괄호로 묶지 않은 SQL Server GUID 값을 반환합니다. 중괄호(예: {일부 GUID})를 사용하여 GUID 값을 반환하려면 이 레지스트리 키의 값(기본값 0)을 1으로 설정해야 합니다.
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\SQL2000CompatMode
기본값으로 XML 파서가 데이터를 로드하면 XML 1.0 규칙에 따라 공백이 정규화됩니다. 이로 인해 데이터에서 일부 공백 문자가 손실됩니다. 따라서 데이터의 텍스트 표현은 구문 분석 후 동일하지 않을 수 있지만 의미상으로 데이터는 동일합니다.
이 키는 데이터에 공백 문자를 유지하기로 선택할 수 있도록 도입되었습니다. 이 레지스트리 키를 추가하고 해당 값을 0으로 설정하면 특성 값의 경우 XML의 공백 문자(LF, CR 및 탭)가 인코딩되어 반환됩니다. 요소 값의 경우 CR만 인코딩되어 반환됩니다.
예시:
CREATE TABLE T( Col1 int, Col2 nvarchar(100)); GO -- Insert data with tab, line feed and carriage return). INSERT INTO T VALUES (1, 'This is a tab . This is a line feed and CR more text'); GO -- Test this query (without the registry key). SELECT * FROM T FOR XML AUTO; -- This is the result (no encoding of special characters). <?xml version="1.0" encoding="utf-8" ?> <r> <T Col1="1" Col2="This is a tab . This is a line feed and CR more text"/> </r> -- Now add registry key with value 0 and execute the query again. -- Note the encoding for carriage return, line-feed and tab in the attribute value. <?xml version="1.0" encoding="utf-8" ?> <r> <T Col1="1" Col2="This is a tab . This is a line feed and CR more text"/> </r> -- Update the query and specify ELEMENTS directive SELECT * FROM T FOR XML AUTO, ELEMENTS -- Only the carriage return is returned encoded. <?xml version="1.0" encoding="utf-8" ?> <r> <T> <Col1>1</Col1> <Col2>This is a tab . This is a line feed and CR more text</Col2> </T> </r>
마이그레이션 문제
다음은 레거시 SQLXML 애플리케이션을 SQLXML 4.0으로 마이그레이션하는 데 영향을 줄 수 있는 문제입니다.
ADO 및 SQLXML 4.0 쿼리
SQLXML의 이전 버전에서는 IIS 가상 디렉터리와 SQLXML ISAPI 필터를 사용한 URL 기반 쿼리 실행에 대한 지원이 제공되었습니다. SQLXML 4.0을 사용하는 애플리케이션의 경우 이 지원을 더 이상 사용할 수 없습니다.
대신 MDAC(Microsoft Data Access Components) 2.6 이상에 처음 도입된 ADO(ActiveX Data Objects)에 대한 SQLXML 확장을 사용하여 SQLXML 쿼리, 템플릿 및 updategram을 실행할 수 있습니다.
자세한 내용은 ADO를 사용한 SQLXML 4.0 쿼리를 실행합니다.
SQL Server 2005에 도입된 SQLXML 3.0 ISAPI 및 데이터 형식에 대한 지원 가능성
ISAPI 지원이 SQLXML 4.0에서 제거되었으므로 솔루션에 SQL Server 2005(9.x)에 도입된 xml 데이터 형식 또는 UDT(사용자 정의 데이터 형식) 및 웹 기반 액세스 같은 향상된 데이터 입력 기능이 필요한 경우, SQLXML 관리 클래스 또는 SQL Server 2005용 네이티브 XML Web Services 같은 다른 유형의 HTTP 처리기 같은 다른 솔루션을 사용해야 합니다.
또는 이러한 형식 확장이 필요하지 않은 경우 SQLXML 3.0을 계속 사용하여 SQL Server 2005(9.x) 및 SQL Server 2008(10.0.x) 설치에 연결할 수 있습니다. SQLXML 3.0 ISAPI 지원은 이러한 이후 버전에서 작동하지만 SQL Server 2005(9.x)에서 도입된 xml 데이터 형식 또는 UDT 유형 지원을 지원하거나 인식하지 않습니다.
임시 파일에 대한 XML 대량 로드 보안 변경
SQLXML 4.0 및 SQL Server의 경우 대량 로드 작업을 실행하는 사용자에게 XML 대량 로드 파일 권한이 부여됩니다. 읽기 및 쓰기 권한은 파일 시스템에서 상속됩니다. SQLXML 및 SQL Server의 이전 버전에서는 SQLXML 하의 XML 대량 로드 시 보안이 유지되지 않고 모든 사용자가 읽을 수 있는 임시 파일이 만들어졌습니다.
클라이언트 쪽 FOR XML에 대한 마이그레이션 문제
실행 엔진의 변경으로 인해 SQL Server는 기본 테이블의 메타데이터에서 FOR XML 쿼리가 SQL Server 2000(8.x)에서 실행된 경우와는 다른 값을 반환할 수 있습니다. 이 경우 FOR XML 쿼리 결과의 클라이언트 쪽 서식은 쿼리가 실행되는 버전에 따라 출력이 다릅니다.
xml 데이터 형식 열에 대해 SQLXML 3.0을 사용하여 클라이언트 쪽에서 FOR XML 쿼리를 실행하는 경우 결과 데이터가 완전히 엔터티화된 문자열로 반환됩니다. SQLXML 4.0에서 SQLNCLI11(SQL Server Native Client)을 공급자로 지정하면 데이터가 XML로 반환됩니다.