Udostępnij za pośrednictwem


Co nowego w programie SQLXML 4.0 z dodatkiem SP1

Dotyczy:programu SQL ServerAzure SQL Database

Program Microsoft SQLXML 4.0 z dodatkiem SP1 zawiera różne aktualizacje i ulepszenia. Ten temat zawiera podsumowanie aktualizacji i linki do bardziej szczegółowych informacji, jeśli są dostępne. Program SQLXML 4.0 z dodatkiem SP1 udostępnia dodatkowe ulepszenia obsługi nowych typów danych wprowadzonych w programie SQL Server 2008 (10.0.x). Ten temat zawiera następujące tematy:

  • Instalowanie SQLXML 4.0 z dodatkiem SP1

  • Problemy z instalacją równoległą

  • SQLXML 4.0 i MSXML

  • Redystrybucja programu SQLXML 4.0

  • Obsługa klienta natywnego programu SQL Server

  • Obsługa typów danych wprowadzonych w programie SQL Server 2005 (9.x)

  • Zmiany ładowania zbiorczego XML dla programu SQLXML 4.0

  • Zmiany klucza rejestru dla programu SQLXML 4.0

  • Problemy z migracją

Instalowanie SQLXML 4.0 SP1

Przed wydaniem programu SQL Server 2008 (10.0.x) program SQLXML 4.0 został wydany z programem SQL Server i był częścią domyślnej instalacji wszystkich wersji programu SQL Server z wyjątkiem programu SQL Server Express. Począwszy od programu SQL Server 2008 (10.0.x), najnowsza wersja programu SQLXML (SQLXML 4.0 SP1) nie jest już dostępna w programie SQL Server. Aby zainstalować SQLXML 4.0 SP1, pobierz go z lokalizacji instalacji dla SQLXML 4.0 SP1 .

Pliki SQLXML 4.0 SP1 są instalowane w następującej lokalizacji:

%PROGRAMFILES%\SQLXML 4.0\

Notatka

Wszystkie odpowiednie ustawienia rejestru dla programu SQLXML 4.0 są wykonywane w ramach procesu instalacji.

Aby umożliwić uruchamianie 32-bitowych aplikacji SQLXML w środowisku Windows na Windows (WOW64) w 64-bitowych systemach operacyjnych Windows, uruchom 64-bitowy pakiet SQLXML 4.0 SP1 o nazwie sqlxml4.msi, który można znaleźć w Centrum Pobierania.

Deinstalacja SQLXML 4.0 z SP1

Współużytkowane klucze rejestru istnieją między SQLXML 3.0 SP3, SQLXML 4.0 i SQLXML 4.0 SP1. Jeśli nowsze wersje programu SQLXML zostaną odinstalowane na tym samym komputerze, który zawiera program SQLXML 3.0 SP3, może być konieczne ponowne zainstalowanie programu SQLXML 3.0 SP3.

Problemy z instalacją równoległą

Proces instalacji programu SQLXML 4.0 nie usuwa plików zainstalowanych we wcześniejszych wersjach programu SQLXML. W związku z tym można mieć biblioteki DLL dla kilku różnych charakterystycznych wersji instalacji programu SQLXML na komputerze. Instalacje można uruchamiać obok siebie. Program SQLXML 4.0 zawiera zarówno niezależne od wersji, jak i zależne od wersji identyfikatory PROGID. Wszystkie aplikacje produkcyjne powinny używać identyfikatorów PROGID zależnych od wersji.

SQLXML 4.0 SP1 i MSXML

Program SQLXML 4.0 nie instaluje programu MSXML. Program SQLXML 4.0 używa programu MSXML 6.0, który jest instalowany w ramach instalacji programu SQL Server 2005 (9.x) lub nowszej.

Redystrybucja programu SQLXML 4.0 z dodatkiem SP1

Program SQLXML 4.0 SP1 można dystrybuować przy użyciu pakietu instalatora redystrybucyjnego. Jednym ze sposobów instalowania wielu pakietów, co użytkownikowi wydaje się być pojedynczą instalacją, jest użycie technologii chainer i programu inicjatora. Aby uzyskać więcej informacji, zobacz Tworzenie niestandardowego pakietu inicjera dla programu Visual Studio 2005 i Dodawanie niestandardowych wymagań wstępnych.

Jeśli aplikacja jest przeznaczona dla platformy innej niż ta, na której została opracowana, możesz pobrać wersje sqlncli.msi dla platformy x64, Itanium i x86 z Centrum pobierania Microsoft.

Istnieją również oddzielne programy instalacyjne redystrybucji dla programu MSXML 6.0 (msxml6.msi). Można je znaleźć na dysku CD instalacji programu SQL Server w następującej lokalizacji:

%CD%\Setup\

Te pliki instalacyjne mogą służyć do instalowania programu MSXML 6.0 bezpośrednio z dysku CD. Mogą być one również używane do swobodnego redystrybucji MSXML 6.0 wraz z programem SQLXML 4.0 SP1 z własnymi aplikacjami niestandardowymi.

Jeśli używasz go jako dostawcy danych z aplikacją, konieczne będzie również ponowne dystrybuowanie klienta natywnego programu SQL Server. Aby uzyskać więcej informacji, zobacz Installing SQL Server Native Client.

Obsługa klienta natywnego programu SQL Server

Program SQLXML 4.0 obsługuje zarówno dostawców sqlOLEDB, jak i SQL Server Native Client. Zaleca się używanie tej samej wersji dostawcy klienta natywnego programu SQL Server i programu SQL Server, ponieważ program SQL Server Native Client jest opracowywany w celu obsługi wszelkich nowych typów danych, które są dostarczane na serwerze, takich jak data ,dateTime2i dateTimeOffset typy danych w programie SQL Server 2008 (10.0.x) i obsługiwane przez klienta natywnego programu SQL Server.

Notatka

Klient natywny programu SQL Server został usunięty w programie SQL Server 2022 (16.x).

Sql Server Native Client to technologia dostępu do danych wprowadzona w programie SQL Server 2005 (9.x). Łączy on dostawcę SQLOLEDB i sterownik SQLODBC w jedną natywną bibliotekę linków dynamicznych (DLL), a jednocześnie udostępnia nowe funkcje oddzielone i różniące się od składników dostępu do danych firmy Microsoft (MDAC).

Klient natywny programu SQL Server może służyć do tworzenia nowych aplikacji lub ulepszania istniejących aplikacji, które muszą korzystać z funkcji wprowadzonych w programie SQL Server, które nie są obsługiwane przez bazy danych SQLOLEDB i SQLODBC w usługach MDAC i Microsoft Windows. Na przykład klient natywny programu SQL Server jest wymagany w przypadku funkcji SQLXML po stronie klienta, takich jak FOR XML, do używania typu danych xml. Aby uzyskać więcej informacji, zobacz Formatowanie XML po stronie klienta (SQLXML 4.0), używanie narzędzia ADO do wykonywania zapytań SQLXML 4.0i programowania natywnego klienta programu SQL Server.

Notatka

Program SQLXML 4.0 nie jest całkowicie zgodny z programem SQLXML 3.0. Ze względu na niektóre poprawki błędów i inne zmiany funkcjonalne, szczególnie usunięcie obsługi interfejsu ISAPI programu SQLXML, nie można używać katalogów wirtualnych usług IIS z programem SQLXML 4.0. Mimo że większość aplikacji będzie działać z drobnymi modyfikacjami, należy je przetestować przed wprowadzeniem ich do środowiska produkcyjnego za pomocą programu SQLXML 4.0.

Obsługa typów danych wprowadzonych w programach SQL Server 2005 i SQL Server 2008

Program SQL Server 2005 (9.x) wprowadził typ danych xml , a program SQLXML 4.0 obsługuje typ danych xml. Aby uzyskać więcej informacji, zobacz wsparcie dla typów danych XML w SQLXML 4.0.

Przykłady użycia xml typu danych w programie SQLXML podczas mapowania widoków XML, zbiorczego ładowania XML lub wykonywania aktualizacji XML można znaleźć w przykładach podanych w poniższych tematach.

Program SQL Server 2008 (10.0.x) wprowadził typy danych Date, Time, DateTime2oraz DateTimeOffset. Program SQLXML 4.0 z dodatkiem SP1 umożliwi korzystanie z tych czterech nowych typów danych jako wbudowanych typów skalarnych w przypadku użycia z dostawcą OLE DB klienta natywnego programu SQL Server (SQLNCLI11), który jest dostarczany w programie SQL Server 2012 (11.x).

Ważny

SQL Server Native Client (SNAC) nie jest dostarczany z:

  • SQL Server 2022 (16.x) i nowsze wersje
  • SQL Server Management Studio 19 i nowsze wersje

Program SQL Server Native Client (SQLNCLI lub SQLNCLI11) oraz starszy dostawca microsoft OLE DB dla programu SQL Server (SQLOLEDB) nie są zalecane w przypadku tworzenia nowych aplikacji.

W przypadku nowych projektów użyj jednego z następujących sterowników.

W przypadku SQLNCLI, które jest dostarczane jako składnik silnika bazy danych SQL Server (wersje 2012–2019), zapoznaj się z tym wyjątkiem cyklu wsparcia .

Zmiany ładowania zbiorczego XML w programie SQLXML 4.0 z dodatkiem Service Pack 1

  • W przypadku SQLXML 4.0 pole przepełnienia SchemaGen jest tworzone z użyciem typu danych XML . Aby uzyskać więcej informacji, zobacz model obiektów ładowania zbiorczego XML programu SQL Server.

  • Jeśli wcześniej utworzono aplikacje języka Microsoft Visual Basic i chcesz używać programu SQLXML 4.0, musisz ponownie skompilować aplikację z odwołaniem do Xblkld4.dll.

  • W przypadku aplikacji Visual Basic Scripting Edition należy zarejestrować bibliotekę DLL, której chcesz użyć. W poniższym przykładzie, jeśli określisz identyfikatory PROGID niezależne od wersji, aplikacja zależy od ostatniej zarejestrowanej biblioteki DLL:

    set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")   
    

    Notatka

    Identyfikator PROGID zależny od wersji to SQLXMLBulkLoad.SQLXMLBulkLoad.4.0.

Zmiany klucza rejestru dla programu SQLXML 4.0

W programie SQLXML 4.0 klucze rejestru zostały zmienione z wcześniejszych wersji na następujące:

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

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

Należy zmienić ustawienia, jeśli chcesz, aby te klucze były obowiązujące dla programu SQLXML 4.0.

Ponadto program SQLXML 4.0 wprowadza następujące klucze rejestru:

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

    Domyślnie SQLXML 4.0 zwraca natywne informacje o błędach dostarczone przez OLE DB i SQL Server zamiast wysokopoziomowego błędu SQLXML (jak to miało miejsce we wcześniejszych wersjach SQLXML). Jeśli nie chcesz tego zachowania, wartość tego klucza rejestru typu DWORD musi być ustawiona na 0 (wartość domyślna to 1).

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

    Domyślnie SQLXML zwraca wartości identyfikatora GUID SQL Server bez nawiasów klamrowych. Jeśli chcesz, aby wartość identyfikatora GUID była zwracana razem z nawiasami klamrowymi (na przykład {jakiś identyfikator GUID}), wartość tego klucza rejestru musi być ustawiona na 1 (wartość domyślna to 0).

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

    Domyślnie, gdy analizator XML ładuje dane, białe spacje są znormalizowane zgodnie z regułami XML 1.0. Powoduje to utratę niektórych białych znaków w twoich danych. W związku z tym tekstowa reprezentacja danych może nie być taka sama po przeanalizowaniu, chociaż dane są takie same.

    Ten klucz jest wprowadzany tak, aby można było zachować znaki odstępu w danych. Jeśli dodasz ten klucz rejestru i ustawisz jego wartość na 0, znaki odstępu (LF, CR i tabulator) w pliku XML zostaną zakodowane w przypadku wartości atrybutów. W przypadku wartości elementów zwracany jest tylko zakodowany znak CR.

    Na przykład:

    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>  
    

Problemy z migracją

Poniżej przedstawiono problemy, które mogą mieć wpływ na migrację starszych aplikacji SQLXML do programu SQLXML 4.0.

Zapytania ADO i SQLXML 4.0

We wcześniejszych wersjach programu SQLXML udostępniono obsługę wykonywania zapytań opartych na adresach URL przy użyciu katalogów wirtualnych usług IIS i filtru ISAPI SQLXML. W przypadku aplikacji korzystających z programu SQLXML 4.0 ta obsługa nie jest już dostępna.

Zamiast tego, zapytania SQLXML, szablony i updategramy mogą być wykonywane za pomocą rozszerzeń SQLXML dla obiektów danych ActiveX (ADO), po raz pierwszy wprowadzonych w Microsoft Data Access Components (MDAC) 2.6 i w nowszych wersjach.

Aby uzyskać więcej informacji, zobacz Using ADO to Execute SQLXML 4.0 Queries(Wykonywanie zapytań SQLXML 4.0).

Obsługiwalność SQLXML 3.0 ISAPI i typów danych wprowadzonych w programie SQL Server 2005

Ponieważ obsługa interfejsu ISAPI została usunięta z programu SQLXML 4.0, jeśli rozwiązanie wymaga rozszerzonych funkcji wpisywania danych wprowadzonych w programie SQL Server 2005 (9.x), takich jak typu danych XML lub zdefiniowanych przez użytkownika typów danych (UTS) i dostępu opartego na sieci Web, należy użyć innego rozwiązania, takiego jak klasy zarządzane SQLXML lub inny typ programu obsługi HTTP, takich jak natywne usługi sieci Web XML dla programu SQL Server 2005.

Alternatywnie, jeśli nie potrzebujesz tych rozszerzeń typu, możesz nadal używać programu SQLXML 3.0 do nawiązywania połączenia z programem SQL Server 2005 (9.x) i programem SQL Server 2008 (10.0.x). Obsługa interfejsu ISAPI programu SQLXML 3.0 będzie działać w przypadku tych nowszych wersji, ale nie obsługuje ani nie rozpoznaje xml typu danych lub obsługi typu UDT wprowadzonego w programie SQL Server 2005 (9.x).

Zmiany zabezpieczeń ładowania zbiorczego XML dla plików tymczasowych

W przypadku programów SQLXML 4.0 i SQL Server uprawnienia do plików ładowania zbiorczego XML są przyznawane użytkownikowi wykonującemu operację ładowania zbiorczego. Uprawnienia do odczytu i zapisu są dziedziczone z systemu plików. W poprzednich wersjach programów SQLXML i SQL Server ładowanie zbiorcze XML w obszarze SQLXML tworzyło pliki tymczasowe, które nie zostały zabezpieczone i mogły być czytelne dla każdego użytkownika.

Problemy z migracją Client-Side FOR XML

Ze względu na zmiany aparatu wykonywania program SQL Server może zwracać różne wartości w metadanych dla tabeli podstawowej niż zwracane, jeśli zapytanie FOR XML zostało wykonane w programie SQL Server 2000 (8.x). W przypadkach, gdy tak się stanie, formatowanie po stronie klienta wyników zapytania FOR XML będzie miało różne dane wyjściowe w zależności od wersji, względem której jest uruchamiane zapytanie.

Jeśli zapytanie FOR XML jest wykonywane po stronie klienta przy użyciu programu SQLXML 3.0 w xml kolumnie typu danych, dane w wynikach zostaną przywrócone jako w pełni ztytucjonalizowany ciąg. W programie SQLXML 4.0, jeśli klient natywny programu SQL Server (SQLNCLI11) jest określony jako dostawca, dane zostaną zwrócone jako XML.