Freigeben über


Neuerungen in SQLXML 4.0 SP1

Microsoft SQLXML 4.0 SP1 enthält verschiedene Updates und Verbesserungen. In diesem Thema werden die Updates zusammengefasst und Links zu detaillierteren Informationen bereitgestellt, sofern verfügbar. SQLXML 4.0 SP1 bietet zusätzliche Verbesserungen zur Unterstützung der neuen Datentypen, die in SQL Server 2008 eingeführt wurden. Dieses Thema umfasst die folgenden Themen:

  • Installieren von SQLXML 4.0 SP1

  • Parallele Installationsprobleme

  • SQLXML 4.0 und MSXML

  • Weiterverteilen von SQLXML 4.0

  • Unterstützung für SQL Server Native Client

  • Unterstützung für in SQL Server 2005 eingeführte Datentypen

  • XML-Massenladeänderungen für SQLXML 4.0

  • Änderungen am Registrierungsschlüssel für SQLXML 4.0

  • Migrationsprobleme

Installieren von SQLXML 4.0 SP1

Vor SQL Server 2008 wurde SQLXML 4.0 mit SQL Server veröffentlicht und war Teil der Standardinstallation aller SQL Server-Versionen mit Ausnahme von SQL Server Express. Ab SQL Server 2008 ist die neueste Version von SQLXML (SQLXML 4.0 SP1) nicht mehr in SQL Server enthalten. Um SQLXML 4.0 SP1 zu installieren, laden Sie es vom Installationsspeicherort für SQLXML 4.0 SP1 herunter.

Die SQLXML 4.0 SP1-Dateien werden am folgenden Speicherort installiert:

%PROGRAMFILES%\SQLXML 4.0\

Hinweis

Alle entsprechenden Registrierungseinstellungen für SQLXML 4.0 werden im Rahmen des Installationsprozesses vorgenommen.

Um die Ausführung von 32-Bit-SQLXML-Anwendungen unter Windows unter Windows (WOW64) auf 64-Bit-Windows-Betriebssystemen zu ermöglichen, führen Sie das 64-Bit-SQLXML 4.0 SP1-Paket namens sqlxml4.msiaus, das im Download Center zu finden ist.

Deinstallieren von SQLXML 4.0 SP1

Gemeinsame Registrierungsschlüssel sind zwischen SQLXML 3.0 SP3, SQLXML 4.0 und SQLXML 4.0 SP1 vorhanden. Wenn die späteren Versionen von SQLXML auf demselben Computer deinstalliert werden, der SQLXML 3.0 SP3 enthält, müssen Sie SQLXML 3.0 SP3 möglicherweise erneut installieren.

Parallele Installationsprobleme

Der Installationsprozess für SQLXML 4.0 entfernt nicht die Dateien, die von früheren Versionen von SQLXML installiert wurden. Daher können Sie DLLs für verschiedene versionsspezifische Installationen von SQLXML auf Ihrem Computer verwenden. Sie können die Installationen nebeneinander ausführen. SQLXML 4.0 enthält sowohl versionsunabhängige als auch versionsabhängige PROGIDs. Alle Produktionsanwendungen sollten versionsabhängige PROGIDs verwenden.

SQLXML 4.0 SP1 und MSXML

SQLXML 4.0 installiert MSXML nicht. SQLXML 4.0 verwendet MSXML 6.0, das als Teil der SQL Server 2005- oder höher-Installation installiert ist.

Verteilen von SQLXML 4.0 SP1

Sie können SQLXML 4.0 SP1 mithilfe des verteilbaren Installationspakets verteilen. Eine Möglichkeit zum Installieren mehrerer Pakete in dem, was dem Benutzer als einzelne Installation erscheint, ist die Verwendung der Chainer- und Bootstrapper-Technologie. Weitere Informationen finden Sie unter Erstellen eines benutzerdefinierten Bootstrapperpakets für Visual Studio 2005 und Hinzufügen von benutzerdefinierten Voraussetzungen.

Wenn Ihre Anwendung auf eine andere Plattform als die plattform abzielt, auf der sie entwickelt wurde, können Sie Versionen von sqlncli.msi für x64, Itanium und x86 aus dem Microsoft Download Center herunterladen.

Es gibt auch separate Neuverteilungsinstallationsprogramme für MSXML 6.0 (msxml6.msi). Diese finden Sie auf der SQL Server-Installations-CD am folgenden Speicherort:

%CD%\Setup\

Diese Installationsdateien können verwendet werden, um MSXML 6.0 direkt über die CD zu installieren. Sie können auch verwendet werden, um MSXML 6.0 zusammen mit SQLXML 4.0 SP1 mit Ihren eigenen benutzerdefinierten Anwendungen frei zu verteilen.

Sie müssen sql Server Native Client auch erneut verteilen, wenn Sie ihn als Datenanbieter mit Ihrer Anwendung verwenden. Weitere Informationen finden Sie unter Installieren von SQL Server Native Client.

Unterstützung für SQL Server Native Client

SQLXML 4.0 unterstützt sowohl die SQLOLEDB- als auch sql Server Native Client-Anbieter. Es wird empfohlen, die gleiche Version des SQL Server Native Client-Anbieters und SQL Server zu verwenden, da SQL Server Native Client entwickelt wird, um alle neuen Datentypen zu unterstützen, die auf dem Server enthalten sind, z. B. die Date, TimeDatentypen DateTime2und dateTimeOffset Datentypen in SQL Server 2008 und von SQL Server 2014 Native Client unterstützt werden.

SQL Server Native Client ist eine Datenzugriffstechnologie, die in SQL Server 2005 eingeführt wurde. Es kombiniert den SQLOLEDB-Anbieter und den SQLODBC-Treiber in einer systemeigenen Dynamic Link Library (DLL), und bietet auch neue Funktionen, die von den Microsoft Data Access Components (MDAC) getrennt und voneinander getrennt sind.

SQL Server Native Client kann verwendet werden, um neue Anwendungen zu erstellen oder vorhandene Anwendungen zu verbessern, die in SQL Server eingeführte Features nutzen müssen, die von SQLOLEDB und SQLODBC in MDAC und Microsoft Windows nicht unterstützt werden. Beispielsweise ist SQL Server Native Client für clientseitige SQLXML-Features wie FOR XML erforderlich, um den xml Datentyp zu verwenden. Weitere Informationen finden Sie unter Clientseitige XML-Formatierung (SQLXML 4.0),Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen und sql Server Native Client Programming.

Hinweis

SQLXML 4.0 ist nicht vollständig abwärtskompatibel mit SQLXML 3.0. Aufgrund einiger Fehlerkorrekturen und anderer funktionsbezogener Änderungen, insbesondere der Entfernung der SQLXML ISAPI-Unterstützung, können Sie keine virtuellen IIS-Verzeichnisse mit SQLXML 4.0 verwenden. Obwohl die meisten Anwendungen mit geringfügigen Änderungen ausgeführt werden, müssen Sie sie testen, bevor Sie sie mit SQLXML 4.0 in die Produktion aufnehmen.

Unterstützung für in SQL Server 2005 und SQL Server 2008 eingeführte Datentypen

SQL Server 2005 hat den xml Datentyp eingeführt, und SQLXML 4.0 unterstützt den xml Datentyp. Weitere Informationen finden Sie unter xml-Datentypunterstützung in SQLXML 4.0.

Beispiele für die Verwendung des xml Datentyps in SQLXML beim Zuordnen von XML-Ansichten, beim Massenladen von XML oder beim Ausführen von XML-Updatediagrammen finden Sie in den folgenden Themen.

SQL Server 2008 hat die Date, TimeDatentypen ", DateTime2" und "DateTimeOffset " eingeführt. SQLXML 4.0 SP1 aktiviert diese vier neuen Datentypen als integrierte skalare Typen bei Verwendung mit SQL Server 2014 Native Client OLE DB Provider (SQLNCLI11), die in SQL Server 2014 enthalten sind.

XML-Massenladeänderungen für SQLXML 4.0 SP1

  • Für SQLXML 4.0 wird das SchemaGen-Überlauffeld mithilfe des xml Datentyps erstellt. Weitere Informationen finden Sie unter SQL Server XML Bulk Load Object Model.

  • Wenn Sie zuvor Microsoft Visual Basic-Anwendungen erstellt haben und SQLXML 4.0 verwenden möchten, müssen Sie die Anwendung mit Verweis auf Xblkld4.dllneu kompilieren.

  • Für Visual Basic Scripting Edition-Anwendungen müssen Sie die DLL registrieren, die Sie verwenden möchten. Wenn Sie im folgenden Beispiel versionsunabhängige PROGIDs angeben, hängt die Anwendung von der letzten registrierten DLL ab:

    set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")   
    

    Hinweis

    Die versionsabhängige PROGID ist SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.

Änderungen am Registrierungsschlüssel für SQLXML 4.0

In SQLXML 4.0 haben sich die Registrierungsschlüssel von früheren Versionen in Folgendes geändert:

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

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

Sie müssen die Einstellungen ändern, wenn diese Schlüssel für SQLXML 4.0 wirksam sein sollen.

Darüber hinaus führt SQLXML 4.0 die folgenden Registrierungsschlüssel ein:

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

    Standardmäßig gibt SQLXML 4.0 systemeigene Fehlerinformationen zurück, die von OLE DB und SQL Server anstelle eines sqlXML-Fehlers auf hoher Ebene bereitgestellt werden (wie in früheren Versionen von SQLXML). Wenn Sie dieses Verhalten nicht wünschen, muss der Wert dieses Registrierungsschlüssels vom Typ DWORD auf 0 festgelegt werden (Standardwert ist 1).

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

    SqlXML gibt standardmäßig SQL Server-GUID-Werte ohne eingeschlossene geschweifte Klammern zurück. Wenn der GUID-Wert mit den geschweiften Klammern zurückgegeben werden soll (z. B. {some GUID}), muss der Wert dieses Registrierungsschlüssels auf 1 festgelegt werden (Standardwert ist 0).

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

    Wenn der XML-Parser die Daten lädt, werden Leerzeichen standardmäßig gemäß den XML 1.0-Regeln normalisiert. Dies führt zu Verlust einiger Leerzeichen in Ihren Daten. Daher ist die Textdarstellung Ihrer Daten nach der Analyse möglicherweise nicht identisch, obwohl die Daten semantisch identisch sind.

    Dieser Schlüssel wird eingeführt, sodass Sie die Leerzeichen in den Daten beibehalten können. Wenn Sie diesen Registrierungsschlüssel hinzufügen und den Wert auf 0 festlegen, werden Leerzeichen (LF, CR und Tabstopp) im XML-Code im Fall von Attributwerten codiert zurückgegeben. Bei Elementwerten wird nur CR-codiert zurückgegeben.

    Beispiel:

    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>  
    

Migrationsprobleme

Es folgen Probleme, die sich auf die Migration Ihrer älteren SQLXML-Anwendungen auf SQLXML 4.0 auswirken können.

ADO- und SQLXML 4.0-Abfragen

In früheren Versionen von SQLXML wurde unterstützung für die URL-basierte Abfrageausführung mit virtuellen IIS-Verzeichnissen und dem SQLXML ISAPI-Filter bereitgestellt. Für Anwendungen, die SQLXML 4.0 verwenden, ist diese Unterstützung nicht mehr verfügbar.

Stattdessen können SQLXML-Abfragen, Vorlagen und Updategramme mithilfe der SQLXML-Erweiterungen für ActiveX Data Objects (ADO) ausgeführt werden, die in Microsoft Data Access Components (MDAC) 2.6 und höher eingeführt wurden.

Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.

Unterstützung für SQLXML 3.0 ISAPI und Datentypen, die in SQL Server 2005 eingeführt wurden

Da die ISAPI-Unterstützung aus SQLXML 4.0 entfernt wurde, müssen Sie eine andere Lösung wie sqlXML managed classes oder einen anderen Typ von HTTP-Handlern verwenden, z. B. den XML-Datentyp oder benutzerdefinierte Datentypen (UDTs) und den webbasierten Zugriff, z. B. sqlXML managed classes oder einen anderen Typ von HTTP-Handlern, z. B. native XML Web Services für SQL Server 2005.

Wenn Sie diese Typerweiterungen nicht benötigen, können Sie auch weiterhin SQLXML 3.0 verwenden, um eine Verbindung mit SQL Server 2005- und SQL Server 2008-Installationen herzustellen. Die SQLXML 3.0 ISAPI-Unterstützung funktioniert mit diesen späteren Versionen, unterstützt aber nicht den Datentyp oder die UDT-Typunterstützung, die xml in SQL Server 2005 eingeführt wurde.

Xml-Massenladesicherheitsänderungen für temporäre Dateien

Für SQLXML 4.0 und SQL Server werden dem Benutzer, der den Massenladevorgang ausführt, XML-Massenladedateiberechtigungen gewährt. Lese- und Schreibberechtigungen werden vom Dateisystem geerbt. In früheren Versionen von SQLXML und SQL Server würde die XML-Massenlast unter SQLXML temporäre Dateien erstellen, die nicht gesichert waren und von jedem gelesen werden konnten.

Migrationsprobleme für Client-Side FOR XML

Aufgrund von Änderungen im Ausführungsmodul gibt SQL Server möglicherweise unterschiedliche Werte in den Metadaten für eine Basistabelle zurück, als wenn die FOR XML-Abfrage unter SQL Server 2000 ausgeführt wurde. In Fällen, in denen dies geschieht, weist die clientseitige Formatierung der FOR XML-Abfrageergebnisse unterschiedliche Ausgabe auf, je nachdem, für welche Version die Abfrage ausgeführt wird.

Wenn eine FOR XML-Abfrage mithilfe von SQLXML 3.0 über eine xml Datentypspalte clientseitig ausgeführt wird, werden die Daten in den Ergebnissen als vollständig entitisierte Zeichenfolge zurückgegeben. Wenn in SQLXML 4.0 der SQL Server Native Client (SQLNCLI11) als Anbieter angegeben wird, werden die Daten als XML zurückgegeben.