Compartilhar via


Novidades no SQLXML 4.0 SP1

O Microsoft SQLXML 4.0 SP1 inclui várias atualizações e aprimoramentos. Este tópico resume as atualizações e fornece links para informações mais detalhadas, quando disponíveis. O SQLXML 4.0 SP1 fornece aprimoramentos adicionais para dar suporte aos novos tipos de dados introduzidos no SQL Server 2008. Este tópico inclui os seguintes assuntos:

  • Instalando o SQLXML 4.0 SP1

  • Problemas de instalação lado a lado

  • SQLXML 4.0 e MSXML

  • Redistribuindo SQLXML 4.0

  • Suporte para o SQL Server Native Client

  • Suporte para tipos de dados introduzidos no SQL Server 2005

  • Alterações de carregamento em massa XML para SQLXML 4.0

  • Alterações de chave do Registro para SQLXML 4.0

  • Problemas de migração

Instalando o SQLXML 4.0 SP1

Antes do SQL Server 2008, o SQLXML 4.0 era lançado com o SQL Server e fazia parte da instalação padrão de todas as versões do SQL Server, exceto para o SQL Server Express. A partir do SQL Server 2008, a versão mais recente do SQLXML (SQLXML 4.0 SP1) não está mais incluída no SQL Server. Para instalar o SQLXML 4.0 SP1, baixe-o do Local de Instalação para SQLXML 4.0 SP1.

Os arquivos SQLXML 4.0 SP1 são instalados no seguinte local:

%PROGRAMFILES%\SQLXML 4.0\

Observação

Todas as configurações apropriadas do Registro para SQLXML 4.0 são feitas como parte do processo de instalação.

Para permitir que aplicativos SQLXML de 32 bits sejam executados no Windows no Windows (WOW64) em sistemas operacionais Windows de 64 bits, execute o pacote SQLXML 4.0 SP1 de 64 bits, chamado sqlxml4.msi, que pode ser encontrado no Centro de Download.

Desinstalando o SQLXML 4.0 SP1

Existem chaves de registro compartilhadas entre SQLXML 3.0 SP3, SQLXML 4.0 e SQLXML 4.0 SP1. Se as versões posteriores do SQLXML forem desinstaladas no mesmo computador que contém o SQLXML 3.0 SP3, talvez seja necessário reinstalar o SQLXML 3.0 SP3.

Problemas de instalação lado a lado

O processo de instalação do SQLXML 4.0 não remove os arquivos que foram instalados por versões anteriores do SQLXML. Portanto, você pode ter DLLs para várias instalações distintas de versão diferentes do SQLXML em seu computador. Você pode executar as instalações lado a lado. O SQLXML 4.0 inclui PROGIDs independentes de versão e dependentes de versão. Todos os aplicativos de produção devem usar PROGIDs dependentes de versão.

SQLXML 4.0 SP1 e MSXML

O SQLXML 4.0 não instala o MSXML. O SQLXML 4.0 usa o MSXML 6.0, que é instalado como parte da instalação do SQL Server 2005 ou posterior.

Redistribuindo SQLXML 4.0 SP1

Você pode distribuir o SQLXML 4.0 SP1 usando o pacote do instalador redistribuível. Uma maneira de instalar vários pacotes no que parece ser uma única instalação é usar a tecnologia chainer e bootstrapper. Para obter mais informações, consulte Criação de um pacote bootstrapper personalizado para Visual Studio 2005 e adição de pré-requisitos personalizados.

Se o aplicativo tiver como destino uma plataforma diferente daquela em que foi desenvolvido, você poderá baixar versões de sqlncli.msi para x64, Itanium e x86 no Centro de Download da Microsoft.

Também há programas de instalação de redistribuição separados para MSXML 6.0 (msxml6.msi). Eles podem ser encontrados no CD de instalação do SQL Server no seguinte local:

%CD%\Setup\

Esses arquivos de instalação podem ser usados para instalar o MSXML 6.0 diretamente do CD. Eles também podem ser usados para redistribuir livremente o MSXML 6.0 juntamente com o SQLXML 4.0 SP1 com seus próprios aplicativos personalizados.

Você também precisará redistribuir o SQL Server Native Client se estiver usando-o como o provedor de dados com seu aplicativo. Para obter mais informações, consulte Como instalar o SQL Server Native Client.

Suporte para o SQL Server Native Client

O SQLXML 4.0 dá suporte aos provedores SQLOLEDB e SQL Server Native Client. É recomendável que você use a mesma versão do provedor do SQL Server Native Client e do SQL Server porque o SQL Server Native Client é desenvolvido para dar suporte a novos tipos de dados que são enviados no servidor, como o Date, Time, DateTime2e dateTimeOffset tipos de dados no SQL Server 2008 e com suporte do SQL Server 2014 Native Client.

O SQL Server Native Client é uma tecnologia de acesso a dados introduzida no SQL Server 2005. Ele combina o Provedor SQLOLEDB e o Driver SQLODBC em uma DLL (biblioteca de link dinâmico) nativa, ao mesmo tempo em que fornece novas funcionalidades separadas e distintas dos MDAC (Componentes de Acesso a Dados da Microsoft).

O SQL Server Native Client pode ser usado para criar novos aplicativos ou aprimorar aplicativos existentes que precisam aproveitar os recursos introduzidos no SQL Server que não têm suporte do SQLOLEDB e do SQLODBC no MDAC e no Microsoft Windows. Por exemplo, o SQL Server Native Client é necessário para que recursos SQLXML do lado do cliente, como FOR XML, usem o xml tipo de dados. Para obter mais informações, consulte Formatação XML do lado do cliente (SQLXML 4.0), usando o ADO para executar consultas SQLXML 4.0 e programação de cliente nativo do SQL Server.

Observação

O SQLXML 4.0 não é completamente compatível com versões anteriores com SQLXML 3.0. Devido a algumas correções de bug e outras alterações funcionais, particularmente a remoção do suporte a ISAPI DO SQLXML, você não pode usar diretórios virtuais do IIS com SQLXML 4.0. Embora a maioria dos aplicativos seja executada com pequenas modificações, você deve testá-los antes de colocá-los em produção com SQLXML 4.0.

Suporte para tipos de dados introduzidos no SQL Server 2005 e no SQL Server 2008

O SQL Server 2005 introduziu o tipo de dados e o xml SQLXML 4.0 dá suporte ao xml tipo de dados. Para obter mais informações, consulte o suporte ao tipo de dados xml no SQLXML 4.0.

Para obter exemplos de como usar o xml tipo de dados em SQLXML ao mapear exibições XML, carregar XML em massa ou executar updategramas XML, consulte exemplos fornecidos nos tópicos a seguir.

O SQL Server 2008 introduziu os Date, Timetipos de dados DateTimeOffset e DateTimeOffsetDateTime2. O SQLXML 4.0 SP1 habilitará esses quatro novos tipos de dados como tipos escalares internos quando usados com o PROVEDOR OLE DB do SQL Server 2014 Native Client (SQLNCLI11), que é fornecido no SQL Server 2014.

Alterações de carregamento em massa XML para SQLXML 4.0 SP1

  • Para SQLXML 4.0, o campo de estouro SchemaGen é criado usando o xml tipo de dados. Para obter mais informações, consulte o modelo de objeto de carga em massa XML do SQL Server.

  • Se você já criou aplicativos do Microsoft Visual Basic e deseja usar o SQLXML 4.0, deverá recompilar o aplicativo com referência a Xblkld4.dll.

  • Para aplicativos do Visual Basic Scripting Edition, você deve registrar a DLL que deseja usar. No exemplo a seguir, se você especificar PROGIDs independentes de versão, o aplicativo dependerá da última DLL registrada:

    set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")   
    

    Observação

    O PROGID dependente de versão é SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.

Alterações de chave do Registro para SQLXML 4.0

No SQLXML 4.0, as chaves do Registro foram alteradas das versões anteriores para as seguintes:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\TemplateCacheSize

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SQLXML4\SchemaCacheSize

Você deve alterar as configurações se quiser que essas chaves estejam em vigor para SQLXML 4.0.

Além disso, o SQLXML 4.0 apresenta as seguintes chaves do Registro:

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\ReportErrorsWithSQLInfo

    Por padrão, o SQLXML 4.0 retorna informações de erro nativas fornecidas pelo OLE DB e PELO SQL Server em vez de um erro SQLXML de alto nível (como foi o caso em versões anteriores do SQLXML). Se você não quiser esse comportamento, o valor dessa chave do Registro do tipo DWORD deverá ser definido como 0 (o padrão é 1).

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\FORXML_GenerateGUIDBraces

    Por padrão, SQLXML retorna valores GUID do SQL Server sem as chaves de colocação. Se você quiser que o valor guid seja retornado com as chaves (por exemplo, {alguns GUID}), o valor dessa chave do Registro deverá ser definido como 1 (o padrão é 0).

  • HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer\Client\SQLXML4\SQL2000CompatMode

    Por padrão, quando o analisador XML carrega os dados, os espaços em branco são normalizados de acordo com as regras XML 1.0. Isso resulta na perda de alguns dos caracteres de espaço em branco em seus dados. Portanto, a representação textual de seus dados pode não ser a mesma após a análise, embora semanticamente os dados sejam os mesmos.

    Essa chave é introduzida para que você possa optar por manter os caracteres de espaço em branco nos dados. Se você adicionar essa chave do Registro e definir seu valor como 0, os caracteres de espaço em branco (LF, CR e guia) no XML serão retornados codificados em caso de valores de atributo. No caso de valores de elemento, somente CR é retornado codificado.

    Por exemplo:

    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>  
    

Problemas de migração

Veja a seguir problemas que podem afetar a migração de seus aplicativos SQLXML herdados para o SQLXML 4.0.

Consultas ADO e SQLXML 4.0

Em versões anteriores do SQLXML, foi fornecido suporte para execução de consulta baseada em URL usando diretórios virtuais do IIS e o filtro ISAPI SQLXML. Para aplicativos que usam SQLXML 4.0, esse suporte não está mais disponível.

Em vez disso, consultas, modelos e updategramas SQLXML podem ser executados usando as extensões SQLXML para ADO (ActiveX Data Objects) introduzidas pela primeira vez no Microsoft Data Access Components (MDAC) 2.6 e posterior.

Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.

Suporte para o ISAPI do SQLXML 3.0 e tipos de dados introduzidos no SQL Server 2005

Como o suporte a ISAPI foi removido do SQLXML 4.0, se sua solução exigir os recursos avançados de digitação de dados introduzidos no SQL Server 2005, como o tipo de dados xml ou UDTs (tipos de dados definidos pelo usuário) e o acesso baseado na Web, você precisará usar outra solução, como classes gerenciadas SQLXML ou outro tipo de manipulador HTTP, como os Serviços Web XML Nativos para SQL Server 2005.

Como alternativa, se você não precisar dessas extensões de tipo, poderá continuar a usar o SQLXML 3.0 para se conectar às instalações do SQL Server 2005 e do SQL Server 2008. O suporte a ISAPI DO SQLXML 3.0 funcionará em relação a essas versões posteriores, mas não dá suporte ou reconhece o tipo de dados ou o xml suporte de tipo UDT introduzido no SQL Server 2005.

Alterações de segurança de carregamento em massa XML para arquivos temporários

Para SQLXML 4.0 e SQL Server, as permissões de arquivo de carregamento em massa XML são concedidas ao usuário que executa a operação de carregamento em massa. As permissões de leitura e gravação são herdadas do sistema de arquivos. Nas versões anteriores do SQLXML e do SQL Server, a carga em massa XML em SQLXML criaria arquivos temporários que não eram protegidos e poderiam ser legíveis por qualquer pessoa.

Problemas de migração para Client-Side FOR XML

Devido a alterações no mecanismo de execução, o SQL Server poderá retornar valores diferentes nos metadados de uma tabela base que seriam retornados se a consulta FOR XML fosse executada no SQL Server 2000. Nos casos em que isso ocorre, a formatação do lado do cliente dos resultados da consulta FOR XML terá uma saída diferente dependendo de qual versão a consulta é executada.

Se uma consulta FOR XML for executada no lado do cliente usando SQLXML 3.0 em uma xml coluna de tipo de dados, os dados nos resultados retornarão como uma cadeia de caracteres totalmente entitizada. No SQLXML 4.0, se o SQL Server Native Client (SQLNCLI11) for especificado como o provedor, os dados serão retornados como XML.