SQLXML 4.0 SP1의 새로운 기능
Microsoft SQLXML 4.0 SP1에는 다양한 업데이트 및 향상된 기능이 포함되어 있습니다. 이 항목에서는 업데이트를 요약하고 사용 가능한 경우 자세한 정보 링크를 제공합니다. SQLXML 4.0 SP1은 SQL Server 2008에 도입된 새로운 데이터 형식을 지원하기 위한 추가적인 향상된 기능을 제공합니다. 이 항목은 다음과 같은 주제로 이루어져 있습니다.
SQLXML 4.0 SP1 설치
병렬 설치 문제
SQLXML 4.0 및 MSXML
SQLXML 4.0 재배포
SQL Server Native Client 지원
SQL Server 2005에서 도입된 데이터 형식 지원
SQLXML 4.0에 대한 XML 대량 로드 변경 내용
SQLXML 4.0에 대한 레지스트리 키 변경 내용
마이그레이션 문제
SQLXML 4.0 SP1 설치
2008년 SQL Server 이전에 SQLXML 4.0은 SQL Server 함께 릴리스되었으며 SQL Server Express 제외한 모든 SQL Server 버전의 기본 설치의 일부였습니다. SQL Server 2008부터 최신 버전의 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를 사용해야 합니다.
SQLXML 4.0 SP1 및 MSXML
SQLXML 4.0은 MSXML을 설치하지 않습니다. SQLXML 4.0은 SQL Server 2005 이상 설치의 일부로 설치된 MSXML 6.0을 사용합니다.
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 재배포해야 합니다. 자세한 내용은 Installing SQL Server Native Client(SQL Server Native Client 설치)를 참조하세요.
SQL Server Native Client 지원
SQLXML 4.0은 SQLOLEDB 및 SQL Server Native Client 공급자를 모두 지원합니다. SQL Server Native Client 2008년 SQL Server , 및 데이터 형식과 같이 Date, Time
DateTime2
서버에 제공되는 새 데이터 형식을 지원하도록 개발되고 에서 지원되므로 동일한 버전의 SQL Server Native Client 공급자 및 dateTimeOffset
SQL Server 사용하는 것이 좋습니다. SQL Server 2014 Native Client.
SQL Server Native Client 2005년 SQL Server 도입된 데이터 액세스 기술입니다. 이 기술은 SQLOLEDB 공급자와 SQLODBC 드라이버를 하나의 네이티브 DLL(동적 링크 라이브러리)로 조합한 것이며 MDAC(Microsoft Data Access Components)와는 분리된 고유한 새 기능을 제공합니다.
SQL Server Native Client 사용하여 새 애플리케이션을 만들거나 MDAC 및 Microsoft Windows의 SQLOLEDB 및 SQLODBC에서 지원하지 않는 SQL Server 도입된 기능을 활용해야 하는 기존 애플리케이션을 향상시킬 수 있습니다. 예를 들어 데이터 형식을 사용 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에서는 데이터 형식이 xml
도입되었으며 SQLXML 4.0은 데이터 형식을 xml
지원합니다. 자세한 내용은 SQLXML 4.0의 xml 데이터 형식 지원을 참조하세요.
XML 뷰를 매핑하거나, XML을 대량 로드하거나, XML Updategram을 실행할 때 SQLXML에서 xml
데이터 형식을 사용하는 방법의 예는 다음 항목에 제공된 예를 참조하십시오.
2008년 SQL Server , DateTime2
및 DateTimeOffset 데이터 형식이 도입되었습니다Date, Time
. SQLXML 4.0 SP1은 SQL Server 2014년에 제공되는 SQL Server 2014년 네이티브 클라이언트 OLE DB 공급자(SQLNCLI11)와 함께 사용할 때 이러한 4가지 새 데이터 형식을 기본 제공 스칼라 형식으로 사용하도록 설정합니다.
SQLXML 4.0 SP1에 대한 XML 대량 로드 변경 내용
SQLXML 4.0의 경우 데이터 형식을 사용하여 SchemaGen 오버플로 필드가
xml
만들어집니다. 자세한 내용은 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 유형의 이 레지스트리 키 값을 0으로 설정해야 합니다(기본값은 1임).
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces
기본적으로 SQLXML은 묶는 괄호 없이 SQL Server GUID 값을 반환합니다. 중괄호를 사용하여 반환된 GUID 값(예: {some GUID})을 사용하려면 이 레지스트리 키의 값을 1로 설정해야 합니다(기본값은 0).
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 4.0로의 레거시 SQLXML 애플리케이션 마이그레이션에 영향을 줄 수 있는 문제입니다.
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에서 제거되었으므로 솔루션에 xml 데이터 형식 또는 UDT(사용자 정의 데이터 형식) 및 웹 기반 액세스와 같은 SQL Server 2005에 도입된 향상된 데이터 입력 기능이 필요한 경우 SQLXML 관리 클래스와 같은 다른 솔루션 또는 SQL Server 2005용 Native XML Web Services와 같은 다른 유형의 HTTP 처리기를 사용해야 합니다.
또는 이러한 형식 확장이 필요하지 않은 경우 SQLXML 3.0을 계속 사용하여 SQL Server 2005 및 SQL Server 2008 설치에 연결할 수 있습니다. SQLXML 3.0 ISAPI 지원은 이러한 이후 버전에서 작동하지만 SQL Server 2005에 도입된 데이터 형식 또는 UDT 형식 지원을 지원하거나 인식하지 xml
않습니다.
임시 파일에 대한 XML 대량 로드 보안 변경
SQLXML 4.0 및 SQL Server 경우 대량 로드 작업을 실행하는 사용자에게 XML 대량 로드 파일 권한이 부여됩니다. 읽기 및 쓰기 권한은 파일 시스템에서 상속됩니다. SQLXML 및 SQL Server의 이전 버전에서는 SQLXML 하의 XML 대량 로드 시 보안이 유지되지 않고 모든 사용자가 읽을 수 있는 임시 파일이 만들어졌습니다.
클라이언트 쪽 FOR XML에 대한 마이그레이션 문제
실행 엔진의 변경으로 인해 SQL Server 기본 테이블의 메타데이터에서 FOR XML 쿼리가 SQL Server 2000에서 실행된 경우와 다른 값을 반환할 수 있습니다. 이 경우 FOR XML 쿼리 결과에 대한 클라이언트 쪽 형식 지정으로 인해 쿼리가 실행되는 버전에 따라 다른 출력이 생성됩니다.
xml
데이터 형식 열에 대해 SQLXML 3.0을 사용하여 클라이언트 쪽에서 FOR XML 쿼리를 실행하는 경우 결과 데이터가 완전히 엔터티화된 문자열로 반환됩니다. SQLXML 4.0에서 SQL Server Native Client(SQLNCLI11)을 공급자로 지정하면 데이터가 XML로 반환됩니다.