Condividi tramite


Novità di SQLXML 4.0 SP1

Microsoft SQLXML 4.0 SP1 include vari aggiornamenti e miglioramenti. In questo argomento viene fornito un riepilogo degli aggiornamenti e vengono riportati i collegamenti a informazioni più dettagliate, se disponibili. SQLXML 4.0 SP1 offre miglioramenti aggiuntivi per supportare i nuovi tipi di dati introdotti in SQL Server 2008. Vengono inoltre presentati gli argomenti seguenti:

  • Installazione di SQLXML 4.0 SP1

  • Problemi di installazione affiancata

  • SQLXML 4.0 e MSXML

  • Ridistribuzione di SQLXML 4.0

  • Supporto per SQL Server Native Client

  • Supporto per i tipi di dati introdotti in SQL Server 2005

  • Modifiche al caricamento bulk XML per SQLXML 4.0

  • Modifiche alle chiavi del Registro di sistema per SQLXML 4.0

  • Problemi di migrazione

Installazione di SQLXML 4.0 SP1

Prima di SQL Server 2008, SQLXML 4.0 è stato rilasciato con SQL Server ed è stato parte dell'installazione predefinita di tutte le versioni SQL Server tranne per SQL Server Express. A partire da SQL Server 2008, la versione più recente di SQLXML (SQLXML 4.0 SP1) non è più inclusa in SQL Server. Per installare SQLXML 4.0 SP1, scaricarlo da Installa percorso per SQLXML 4.0 SP1.

I file di SQLXML 4.0 SP1 vengono installati nel percorso seguente:

%PROGRAMFILES%\SQLXML 4.0\

Nota

Tutte le impostazioni del Registro di sistema appropriate per SQLXML 4.0 vengono definite durante il processo di installazione.

Per consentire l'esecuzione delle applicazioni SQLXML a 32 bit in sistemi operativi WOW64 (Windows on Windows) a 64 bit, eseguire il pacchetto SQLXML 4.0 SP1 a 64 bit, denominato sqlxml4.msi, disponibile nell'Area download Microsoft.

Disinstallazione di SQLXML 4.0 SP1

In SQLXML 3.0 SP3, SQLXML 4.0 e SQLXML 4.0 SP1 sono presenti chiavi del Registro di sistema condivise. Se le versioni più recenti di SQLXML vengono disinstallate dallo stesso computer su cui è presente SQLXML 3.0 SP3, potrebbe essere necessario reinstallare quest'ultimo.

Problemi di installazione affiancata

Il processo di installazione di SQLXML 4.0 non determina la rimozione dei file installati da versioni precedenti di SQLXML. È pertanto possibile che in un computer siano presenti le DLL relative a installazioni di diverse versioni di SQLXML. È possibile eseguire installazioni side-by-side. In SQLXML 4.0 sono inclusi sia i PROGID dipendenti sia quelli indipendenti dalla versione. Per tutte le applicazioni di produzione è consigliabile usare i PROGID dipendenti dalla versione.

SQLXML 4.0 SP1 e MSXML

SQLXML 4.0 non prevede l'installazione di MSXML, SQLXML 4.0 usa MSXML 6.0, installato come parte dell'installazione di SQL Server 2005 o successiva.

Ridistribuzione di SQLXML 4.0 SP1

Per distribuire SQLXML 4.0 SP1, usare il pacchetto del programma di installazione ridistribuibile. Un modo per installare più pacchetti in un'installazione che all'utente può sembrare singola consiste nell'usare la tecnologia del chainer e del programma di avvio automatico. Per altre informazioni, vedere Authoring a Custom Bootstrapper Package for Visual Studio 2005 e Aggiunta di prerequisiti personalizzati.

Se l'applicazione è destinata a una piattaforma diversa da quella su cui è stata sviluppata, è possibile scaricare versioni di sqlncli.msi per x64, Itanium e x86 dall'Area download Microsoft.

Sono anche disponibili programmi di installazione di ridistribuzione separati per MSXML 6.0 (msxml6.msi). Queste informazioni sono disponibili nel CD di installazione di SQL Server nel percorso seguente:

%CD%\Setup\

Questi file di installazione possono essere usati per installare MSXML 6.0 direttamente dal CD. Possono inoltre essere usati per ridistribuire liberamente MSXML 6.0 con SQLXML 4.0 SP1 con applicazioni personalizzate.

È anche necessario ridistribuire SQL Server Native Client se si usa come provider di dati con l'applicazione. Per altre informazioni, vedere Installazione di SQL Server Native Client.

Supporto per SQL Server Native Client

SQLXML 4.0 supporta sia i provider SQLOLEDB che i provider di SQL Server Native Client. È consigliabile usare la stessa versione del provider di SQL Server Native Client e SQL Server perché SQL Server Native Client viene sviluppato per supportare tutti i nuovi tipi di dati forniti nel server, ad esempio i Date, Timetipi di dati , DateTime2dateTimeOffset e in SQL Server 2008 e supportati da SQL Server 2014 Native Client.

SQL Server Native Client è una tecnologia di accesso ai dati introdotta nel SQL Server 2005. Questa tecnologia integra il provider SQLOLEDB e il driver SQLODBC in un'unica libreria a collegamento dinamico (DLL) nativa, offrendo contemporaneamente nuove funzionalità diverse da Microsoft Data Access Components (MDAC).

SQL Server Native Client può essere usato per creare nuove applicazioni o migliorare le applicazioni esistenti che devono sfruttare le funzionalità introdotte in SQL Server non supportate da SQLOLEDB e SQLODBC in MDAC e Microsoft Windows. Ad esempio, SQL Server Native Client è necessario per le funzionalità SQLXML lato client, ad esempio FOR XML, per usare il xml tipo di dati. Per altre informazioni, vedere Formattazione XML lato client (SQLXML 4.0),Uso di ADO per eseguire query SQLXML 4.0 e programmazione SQL Server Native Client.

Nota

SQLXML 4.0 non è completamente compatibile con la versione precedente SQLXML 3.0. A causa di alcune correzioni di bug e di altre modifiche funzionali, in modo specifico la rimozione del supporto ISAPI SQLXML, non è possibile usare le directory virtuali IIS con SQLXML 4.0. Anche se la maggior parte delle applicazioni viene eseguita con modifiche minori, è necessario testare le applicazioni prima di metterle in produzione con SQLXML 4.0.

Supporto per i tipi di dati introdotti in SQL Server 2005 e SQL Server 2008

SQL Server 2005 ha introdotto il xml tipo di dati e SQLXML 4.0 supporta il xml tipo di dati. Per altre informazioni, vedere supporto per il tipo di dati xml in SQLXML 4.0.

Per esempi relativi all'utilizzo del tipo di dati xml in SQLXML in caso di mapping di viste XML, di caricamento bulk XML o di esecuzione di updategram XML, fare riferimento agli esempi forniti negli argomenti seguenti.

SQL Server 2008 ha introdotto i Date, Timetipi di dati , DateTime2e DateTimeOffset. SQLXML 4.0 SP1 consentirà questi quattro nuovi tipi di dati come tipi scalari predefiniti quando usati con SQL Server 2014 Native Client OLE DB Provider (SQLNCLI11), che viene fornito in SQL Server 2014.

Modifiche al caricamento bulk XML per SQLXML 4.0 SP1

  • Per SQLXML 4.0, il campo Overflow SchemaGen viene creato usando il xml tipo di dati. Per altre informazioni, vedere SQL Server modello a oggetti di carico bulk XML.

  • Se in precedenza sono state create applicazioni Microsoft Visual Basic e si vuole usare SQLXML 4.0, è necessario ricompilare l'applicazione con riferimento a Xblkld4.dll.

  • Per le applicazioni Visual Basic, Scripting Edition è necessario registrare la DLL da usare. Nell'esempio seguente, se si specificano PROGID indipendenti dalla versione, l'applicazione dipende dall'ultima DLL registrata:

    set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")   
    

    Nota

    Il PROGID dipendente dalla versione è SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.

Modifiche alle chiavi del Registro di sistema per SQLXML 4.0

In SQLXML 4.0 le chiavi del Registro di sistema sono state sostituite rispetto alle versioni precedenti dalle chiavi seguenti.

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

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

Se si desidera rendere effettive tali chiavi per SQLXML 4.0, è necessario modificare le impostazioni.

Con SQLXML 4.0 vengono inoltre introdotte le chiavi del Registro di sistema seguenti:

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

    Per impostazione predefinita, SQLXML 4.0 restituisce informazioni di errore native fornite da OLE DB e SQL Server anziché un errore SQLXML di alto livello, come nelle versioni precedenti di SQLXML. Per evitare questo comportamento, il valore di questa chiave del Registro di sistema di tipo DWORD deve essere impostato su 0 (l'impostazione predefinita è 1).

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

    Per impostazione predefinita, SQLXML restituisce i valori GUID di SQL Server senza racchiuderli fra parentesi graffe. Se si vuole che il valore GUID restituito con le parentesi graffe (ad esempio, {alcuni GUID}), il valore di questa chiave del Registro di sistema deve essere impostato su 1 (il valore predefinito è 0).

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

    Per impostazione predefinita, quando il parser XML carica i dati, gli spazi vuoti vengono normalizzati in base alle regole di XML 1.0. In questo modo vengono persi alcuni degli spazi vuoti nei dati. La rappresentazione testuale dei dati potrebbe pertanto non essere uguale dopo l'analisi, anche se i dati rimarranno invariati dal punto di vista semantico.

    Questa chiave viene introdotta in modo che sia possibile scegliere di mantenere gli spazi vuoti nei dati. Se si aggiunge tale chiave del Registro di sistema e se ne imposta il valore su 0, gli spazi vuoti (LF, CR e TAB) nei dati XML vengono restituiti codificati nel caso di valori di attributi. Nel caso di valori di elementi, solo il carattere CR viene restituito codificato.

    Ad esempio:

    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>  
    

Problemi di migrazione

Di seguito vengono riportati i problemi che potrebbero avere un impatto sulla migrazione delle applicazioni SQLXML legacy a SQLXML 4.0.

Query ADO e SQLXML 4.0

Nelle versioni precedenti di SQLXML viene fornito il supporto per l'esecuzione di query basate sull'URL mediante le directory virtuali IIS e il filtro ISAPI SQLXML. Per le applicazioni che usano SQLXML 4.0 questo supporto non è più disponibile.

Gli updategram, i modelli e le query SQLXML possono invece essere eseguiti usando le estensioni SQLXML di ActiveX Data Objects (ADO), introdotte per la prima volta con Microsoft Data Access Components (MDAC) 2.6 e versioni successive.

Per altre informazioni, vedere Uso di ADO per eseguire query SQLXML 4.0.

Supporto per ISAPI SQLXML 3.0 e per i tipi di dati introdotti in SQL Server 2005

Poiché il supporto ISAPI è stato rimosso da SQLXML 4.0, se la soluzione richiede funzionalità avanzate di digitazione dei dati introdotte in SQL Server 2005, ad esempio il tipo di dati xml o i tipi di dati definiti dall'utente e l'accesso basato sul Web, sarà necessario usare un'altra soluzione, ad esempio classi gestite SQLXML o un altro tipo di gestore HTTP, ad esempio Servizi Web XML nativi per SQL Server 2005.

In alternativa, se non sono necessarie queste estensioni di tipo, è possibile continuare a usare SQLXML 3.0 per connettersi a SQL Server 2005 e SQL Server installazioni 2008. Il supporto ISAPI di SQLXML 3.0 funzionerà con queste versioni successive, ma non supporta né riconosce il tipo di dati o il xml supporto del tipo definito dall'utente introdotto in SQL Server 2005.

Modifiche alla sicurezza del caricamento bulk XML per i file temporanei

Per SQLXML 4.0 e SQL Server, all'utente che esegue l'operazione di caricamento bulk vengono concesse autorizzazioni per il caricamento bulk XML. Le autorizzazioni di lettura e scrittura vengono ereditate dal file system. Nelle versioni precedenti di SQLXML e SQL Server, il caricamento bulk XML in SQLXML crea file temporanei non protetti che potrebbero essere letti da chiunque.

Problemi di migrazione per FOR XML sul lato client

A causa delle modifiche apportate al motore di esecuzione, SQL Server potrebbe restituire valori diversi nei metadati di una tabella di base rispetto a quelli restituiti se la query FOR XML è stata eseguita in SQL Server 2000. In questi casi, la formattazione sul lato client dei risultati della query FOR XML presenterà un output differente, a seconda della versione sulla quale viene eseguita la query.

Se una query FOR XML viene eseguita sul lato client usando SQLXML 3.0 su una colonna con tipo di dati xml, i dati dei risultati verranno restituiti sotto forma di stringa sostituita completamente da entità. In SQLXML 4.0, se il SQL Server Native Client (SQLNCLI11) viene specificato come provider, i dati verranno restituiti come XML.