Condividi tramite


Novità di SQLXML 4.0 SP1

In Microsoft SQLXML 4.0 SP1 sono inclusi diversi 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. Questo argomento include 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 in blocco 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 del rilascio di SQL Server 2008, SQLXML 4.0 con SQL Server faceva parte dell'installazione predefinita di tutte le versioni di SQL Server ad eccezione di 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 dal Percorso di installazione per SQLXML 4.0 SP1.

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

%PROGRAMFILES%\SQLXML 4.0\

Annotazioni

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 versione 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). Tali programmi sono disponibili nel CD del programma 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.

È inoltre necessario ridistribuire SQL Server Native Client se viene usato 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 di SQLOLEDB sia quelli di SQL Server Native Client. È consigliabile usare la stessa versione del provider 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 , DateTime2e dateTimeOffset in SQL Server 2008 e supportati da SQL Server 2014 Native Client.

SQL Server Native Client è una tecnologia di accesso ai dati introdotta in 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 quelle esistenti che richiedono l'utilizzo delle funzionalità in SQL Server e 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 l'esecuzione di query SQLXML 4.0 e Programmazione di SQL Server Native Client.

Annotazioni

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 del tipo di dati xml in SQLXML 4.0.

Per esempi di come usare il tipo di dati in SQLXML durante il xml mapping delle viste XML, il caricamento bulk di XML o l'esecuzione di updategram XML, vedere esempi forniti negli argomenti seguenti.

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

Modifiche al caricamento massivo XML per SQLXML 4.0 SP1

  • Per SQLXML 4.0, il campo di overflow SchemaGen viene creato usando il xml tipo di dati . Per ulteriori informazioni, vedere Modello a oggetti di caricamento in blocco in SQL Server XML.

  • Se sono state precedentemente create applicazioni Microsoft Visual Basic e si intende usare SQLXML 4.0, è necessario ricompilare l'applicazione con il 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")   
    

    Annotazioni

    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 sugli errori nativi fornite da OLE DB e SQL Server, anziché un errore SQLXML di livello elevato (come nel caso delle 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 sia 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.

    Per 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.

Le query di ADO e di 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 alle installazioni di SQL Server 2005 e SQL Server 2008. Il supporto ISAPI di SQLXML 3.0 funziona con queste versioni successive, ma non supporta o riconosce il tipo di dati o il supporto del tipo definito dall'utente xml introdotto in SQL Server 2005.

Modifiche alla sicurezza del caricamento massivo XML per i file temporanei

Per SQLXML 4.0 e SQL Server, le autorizzazioni per i file del caricamento bulk XML vengono concesse all'utente che esegue l'operazione di caricamento bulk. 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 xml colonna di tipo di dati, i dati nei risultati verranno restituiti come stringa completamente entità. In SQLXML 4.0, se SQL Server Native Client (SQLNCLI11) viene specificato come provider, i dati verranno restituiti come XML.