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 설치

SQL Server 2008 이전에 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 설치 위치에서 SQLXML을 다운로드해야 합니다.

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 또는 SQL Server 2008 설치의 일부로 설치되는 MSXML 6.0을 사용합니다.

SQLXML 4.0 SP1 재배포

재배포 가능 설치 관리자 패키지를 사용하여 SQLXML 4.0 SP1을 배포할 수 있습니다. 여러 패키지를 단일 설치인 것처럼 패키징하여 설치하는 한 가지 방법으로 chainer와 부트스트래퍼 기술을 사용할 수 있습니다. 자세한 내용은 Authoring a Custom Bootstrapper Package for 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는 같은 버전을 사용하는 것이 좋습니다. SQL Server Native Client는 SQL Server 2008 Native Client에서 지원하는 SQL Server 2008의 Date, Time, DateTime2 및 dateTimeOffset 데이터 형식 등과 같이 서버에 함께 제공되는 모든 새로운 데이터 형식을 지원할 수 있도록 개발되었기 때문입니다.

SQL Server Native Client는 SQL Server 2005에 처음 도입된 데이터 액세스 기술입니다. 이 기술은 SQLOLEDB 공급자와 SQLODBC 드라이버를 하나의 네이티브 DLL(동적 링크 라이브러리)로 조합한 것이며 MDAC(Microsoft Data Access Components)와는 분리된 고유한 새 기능을 제공합니다.

SQL Server Native Client를 사용하여 새 응용 프로그램을 만들 수도 있고 MDAC 및 Microsoft Windows의 SQLOLEDB 및 SQLODBC에서 지원하지 않지만 SQL Server에 도입된 기능을 활용해야 하는 기존 응용 프로그램을 향상시킬 수도 있습니다. 예를 들어 FOR XML 같은 클라이언트 쪽 SQLXML 기능에 xml 데이터 형식을 사용하려면 SQL Server Native Client가 필요합니다. 자세한 내용은 클라이언트측 XML 서식 지정(SQLXML 4.0), ADO를 사용하여 SQLXML 4.0 쿼리 실행SQL Server 2008 Native Client 프로그래밍을 참조하십시오.

[!참고]

SQLXML 4.0은 SQLXML 3.0과 완전히 호환되지 않습니다. 일부 버그 수정 및 기타 기능 변경, 특히 SQLXML ISAPI 지원 제거로 인해 SQLXML 4.0에서는 IIS 가상 디렉터리를 사용할 수 없습니다. 대부분의 응용 프로그램은 약간만 수정해도 실행되지만 SQLXML 4.0과 함께 프로덕션에 배치하기 전에 테스트해야 합니다.

SQL Server 2005 및 SQL Server 2008에 도입된 데이터 형식 지원

xml 데이터 형식은 SQL Server 2005에서 도입되었으며 SQLXML 4.0은 xml 데이터 형식을 지원합니다. 자세한 내용은 SQLXML 4.0의 xml 데이터 형식 지원을 참조하십시오.

XML 뷰를 매핑하거나, XML을 대량 로드하거나, XML Updategram을 실행할 때 SQLXML에서 xml 데이터 형식을 사용하는 방법의 예는 다음 항목에 제공된 예를 참조하십시오.

SQL Server 2008에는 Date, Time, DateTime2 및 DateTimeOffset 데이터 형식이 도입되었습니다. SQL Server 2008에 기본 제공되는 SQL Server 2008 Native Client OLE DB 공급자(SQLNCLI10)와 함께 SQLXML 4.0 SP1을 사용하는 경우 이러한 네 가지 데이터 형식이 기본 제공 스칼라 형식으로 사용됩니다.

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 &#x09;. This is a line feed and CR &#x0D;&#x0A; 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 &#x0D;
     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 지원 가능성

SQLXML 4.0에서는 ISAPI 지원이 제거되었으므로 SQL Server 2005에서 도입된 xml 데이터 형식 또는 UDT(사용자 정의 데이터 형식), 웹 기반 액세스 등의 향상된 데이터 형식 지정 기능이 솔루션에 필요한 경우 SQLXML 관리되는 클래스와 같은 다른 솔루션이나 SQL Server 2005용 네이티브 XML 웹 서비스와 같은 다른 유형의 HTTP 처리기를 사용해야 합니다.

또는 이러한 형식 확장이 필요하지 않은 경우 계속 SQLXML 3.0을 사용하여 SQL Server 2005 및 SQL Server 2008 설치에 연결할 수 있습니다. SQLXML 3.0 ISAPI 지원은 이러한 이후 버전에서 작동하지만 SQL Server 2005에서 도입된 xml 데이터 형식 또는 UDT 유형 지원을 지원하거나 인식하지 않습니다.

임시 파일에 대한 XML 대량 로드 보안 변경

SQLXML 4.0 및 SQL Server 2005 또는 SQL Server 2008의 경우 XML 대량 로드 파일 권한이 대량 로드 작업을 실행하는 사용자에게 부여됩니다. 읽기 및 쓰기 권한은 파일 시스템에서 상속됩니다. SQLXML 및 SQL Server의 이전 버전에서는 SQLXML 하의 XML 대량 로드 시 보안이 유지되지 않고 모든 사용자가 읽을 수 있는 임시 파일이 만들어졌습니다.

클라이언트 쪽 FOR XML에 대한 마이그레이션 문제

실행 엔진의 변경으로 인해 SQL Server 2005 및 SQL Server 2008은 SQL Server 2000에서 FOR XML 쿼리를 실행할 경우 반환되는 값과는 다른 메타데이터의 값을 기본 테이블에 대해 반환할 수 있습니다. 이 경우 FOR XML 쿼리 결과에 대한 클라이언트 쪽 형식 지정으로 인해 쿼리가 실행되는 버전에 따라 다른 출력이 생성됩니다.

xml 데이터 형식 열에 대해 SQLXML 3.0을 사용하여 클라이언트 쪽에서 FOR XML 쿼리를 실행하는 경우 결과 데이터가 완전히 엔터티화된 문자열로 반환됩니다. SQLXML 4.0에서 SQL Server Native Client(SQLNCLI10)를 공급자로 지정하면 데이터가 XML로 반환됩니다.