Aracılığıyla paylaş


SQLXML 4.0 SP1'deki Yenilikler

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Microsoft SQLXML 4.0 SP1 çeşitli güncelleştirmeler ve geliştirmeler içerir. Bu konu, güncelleştirmeleri özetler ve varsa daha ayrıntılı bilgilerin bağlantılarını sağlar. SQLXML 4.0 SP1, SQL Server 2008'de (10.0.x) kullanıma sunulan yeni veri türlerini desteklemek için ek geliştirmeler sağlar. Bu konu aşağıdaki konuları içerir:

  • SQLXML 4.0 SP1'i yükleme

  • Yan Yana Yükleme Sorunları

  • SQLXML 4.0 ve MSXML

  • SQLXML 4.0 Yeniden Dağıtma

  • SQL Server Yerel İstemcisi desteği

  • SQL Server 2005'te (9.x) Sunulan Veri Türleri desteği

  • SQLXML 4.0 için XML Toplu Yükleme Değişiklikleri

  • SQLXML 4.0 için Kayıt Defteri Anahtarı Değişiklikleri

  • Geçiş Sorunları

SQLXML 4.0 SP1'i yükleme

SQL Server 2008 (10.0.x) sürümünden önce SQLXML 4.0, SQL Server ile yayımlandı ve SQL Server Express dışındaki tüm SQL Server sürümlerinin varsayılan yüklemesinin bir parçasıydı. SQL Server 2008'den (10.0.x) başlayarak, SQLXML'nin en son sürümü (SQLXML 4.0 SP1) artık SQL Server'a dahil değildir. SQLXML 4.0 SP1'i yüklemek için, SQLXML 4.0 SP1 Yükleme Konumuadresinden indirin.

SQLXML 4.0 SP1 dosyaları aşağıdaki konuma yüklenir:

%PROGRAMFILES%\SQLXML 4.0\

Not

SQLXML 4.0 için tüm uygun kayıt defteri ayarları yükleme işleminin bir parçası olarak yapılır.

32 bit SQLXML uygulamalarının 64 bit Windows işletim sistemlerinde Windows üzerinde Windows (WOW64) altında çalışmasına izin vermek için, İndirme Merkezi'nden bulunabilen sqlxml4.msiadlı 64 bit SQLXML 4.0 SP1 paketini çalıştırın.

SQLXML 4.0 SP1'i kaldırma

SQLXML 3.0 SP3, SQLXML 4.0 ve SQLXML 4.0 SP1 arasında paylaşılan kayıt defteri anahtarları vardır. SQLXML'nin sonraki sürümleri SQLXML 3.0 SP3 içeren aynı bilgisayarda kaldırılırsa, SQLXML 3.0 SP3'i yeniden yüklemeniz gerekebilir.

Yan Yana Yükleme Sorunları

SQLXML 4.0 yükleme işlemi, SQLXML'nin önceki sürümleri tarafından yüklenen dosyaları kaldırmaz. Bu nedenle, bilgisayarınızda SQLXML'nin birkaç farklı sürüm ayırt edici yüklemesi için DLL'leriniz olabilir. Yüklemeleri yan yana çalıştırabilirsiniz. SQLXML 4.0 hem sürümden bağımsız hem de sürüme bağımlı PROGID'leri içerir. Tüm üretim uygulamaları sürüme bağımlı PROGID'ler kullanmalıdır.

SQLXML 4.0 SP1 ve MSXML

SQLXML 4.0, MSXML'yi yüklemez. SQLXML 4.0, SQL Server 2005 (9.x) veya sonraki bir yüklemenin parçası olarak yüklenen MSXML 6.0'ı kullanır.

SQLXML 4.0 SP1'i yeniden dağıtma

Yeniden dağıtılabilir yükleyici paketini kullanarak SQLXML 4.0 SP1'i dağıtabilirsiniz. Kullanıcıya tek bir yükleme gibi görünen birden çok paket yüklemenin bir yolu zincirleyici ve önyükleyici teknolojisini kullanmaktır. Daha fazla bilgi için bkz. Visual Studio 2005 için Özel Önyükleyici Paketi Yazma ve Özel Önkoşullar Ekleme.

Uygulamanız geliştirildiği platform dışında bir platformu hedeflediyse, Microsoft İndirme Merkezi'nden x64, Itanium ve x86 için sqlncli.msi sürümlerini indirebilirsiniz.

MSXML 6.0 (msxml6.msi) için ayrı yeniden dağıtım yükleme programları da vardır. Bunlar SQL Server yükleme CD'sinde aşağıdaki konumda bulunabilir:

%CD%\Setup\

Bu yükleme dosyaları MSXML 6.0'ı doğrudan CD'den yüklemek için kullanılabilir. Ayrıca MSXML 6.0 ve SQLXML 4.0 SP1'i kendi özel uygulamalarınızla serbestçe yeniden dağıtmak için de kullanılabilirler.

Uygulamanızda veri sağlayıcısı olarak kullanıyorsanız SQL Server Yerel İstemcisi'ni de yeniden dağıtmanız gerekir. Daha fazla bilgi için bkz. SQL Server Yerel İstemcisini Yükleme.

SQL Server Yerel İstemcisi desteği

SQLXML 4.0 hem SQLOLEDB hem de SQL Server Yerel İstemci sağlayıcılarını destekler. SQL Server Yerel İstemci, SQL Server 2008 (10.0.x) 'deki Tarih, Saat, DateTime2ve dateTimeOffset gibi yeni veri türlerini desteklemek için geliştirildiğinden, SQL Server Yerel İstemci sağlayıcısının ve SQL Server'ın aynı sürümünü kullanmanız önerilir.

Not

SQL Server Yerel İstemcisi SQL Server 2022'de (16.x) kaldırıldı.

SQL Server Native Client, SQL Server 2005'te (9.x) tanıtılan bir veri erişim teknolojisidir. SQLOLEDB Sağlayıcısını ve SQLODBC Sürücüsünü tek bir yerel dinamik bağlantı kitaplığında (DLL) birleştirir ve aynı zamanda Microsoft Veri Erişim Bileşenleri'nden (MDAC) ayrı ve ayrı yeni işlevler sağlar.

SQL Server Yerel İstemcisi, MDAC ve Microsoft Windows'ta SQLOLEDB ve SQLODBC tarafından desteklenmeyen SQL Server'da kullanıma sunulan özelliklerden yararlanması gereken yeni uygulamalar oluşturmak veya mevcut uygulamaları geliştirmek için kullanılabilir. Örneğin, xml veri türünü kullanmak için FOR XML gibi istemci tarafı SQLXML özellikleri için SQL Server Yerel İstemcisi gereklidir. Daha fazla bilgi için bkz. İstemci Tarafı XML Biçimlendirmesi (SQLXML 4.0), SQLXML 4.0 SorgularıYürütmek için ADO Kullanma ve SQL Server Yerel İstemci Programlama .

Not

SQLXML 4.0, SQLXML 3.0 ile tamamen geriye dönük olarak uyumlu değildir. SqlXML ISAPI desteğinin kaldırılması başta olmak üzere bazı hata düzeltmeleri ve diğer işlevsel değişiklikler nedeniyle, SQLXML 4.0 ile IIS sanal dizinlerini kullanamazsınız. Çoğu uygulama küçük değişikliklerle çalışacak olsa da, BUNLARı SQLXML 4.0 ile üretime geçirmeden önce test etmeniz gerekir.

SQL Server 2005 ve SQL Server 2008'de Sunulan Veri Türleri desteği

SQL Server 2005 (9.x), xml veri türünü kullanıma sunarken SQLXML 4.0, xml veri türünü destekler. Daha fazla bilgi için bkz. SQLXML 4.0 xml Veri Türü Desteği.

XML görünümlerini eşlerken, XML'yi toplu yüklerken veya XML güncelleştirme birimlerini yürütürken SQLXML'de xml veri türünün nasıl kullanılacağına ilişkin örnekler için aşağıdaki konularda sağlanan örneklere bakın.

SQL Server 2008 (10.0.x), Tarih, Saat, DateTime2ve DateTimeOffset veri türlerini kullanıma sunar. SQLXML 4.0 SP1, SQL Server 2012'de (11.x) gönderilen SQL Server Yerel İstemci OLE DB Sağlayıcısı (SQLNCLI11) ile kullanıldığında yerleşik skaler türler olarak bu dört yeni veri türünü etkinleştirir.

Önemli

SQL Server Native Client (SNAC) ile birlikte gönderilmez:

  • SQL Server 2022 (16.x) ve sonraki sürümleri
  • SQL Server Management Studio 19 ve sonraki sürümleri

YENI uygulama geliştirme için SQL Server Yerel İstemcisi (SQLNCLI veya SQLNCLI11) ve SQL Server için eski Microsoft OLE DB Sağlayıcısı (SQLOLEDB) önerilmez.

Yeni projeler için aşağıdaki sürücülerden birini kullanın:

SQL Server Veritabanı Altyapısı'nın (sürüm 2012 ile 2019 arasında) bir bileşeni olarak gelen SQLNCLI için, Destek Yaşam Döngüsü özel durumukonusuna bakın.

SQLXML 4.0 SP1 için XML Toplu Yükleme Değişiklikleri

  • SQLXML 4.0 için SchemaGen taşma alanı xml veri türü kullanılarak oluşturulur. Daha fazla bilgi için bkz. SQL Server XML Toplu Yükleme Nesne Modeli.

  • Daha önce Microsoft Visual Basic uygulamaları oluşturduysanız ve SQLXML 4.0 kullanmak istiyorsanız, uygulamayı Xblkld4.dllbaşvurusuyla yeniden derlemeniz gerekir.

  • Visual Basic Scripting Edition uygulamaları için kullanmak istediğiniz DLL'yi kaydetmeniz gerekir. Aşağıdaki örnekte, sürümden bağımsız PROGID'ler belirtirseniz, uygulama son kayıtlı DLL'ye bağlıdır:

    set objBulkLoad = CreateObject("SQLXMLBulkLoad.SQLXMLBulkLoad")   
    

    Not

    Sürüme bağımlı PROGID, SQLXMLBulkLoad.SQLXMLBulkLoad.4.0'dır.

SQLXML 4.0 için Kayıt Defteri Anahtarı Değişiklikleri

SQLXML 4.0'da kayıt defteri anahtarları önceki sürümlerden aşağıdakine değişmiştir:

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

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

Bu anahtarların SQLXML 4.0 için geçerli olmasını istiyorsanız ayarları değiştirmeniz gerekir.

Ayrıca, SQLXML 4.0 aşağıdaki kayıt defteri anahtarlarını tanıtır:

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

    Varsayılan olarak, SQLXML 4.0 üst düzey SQLXML hatası yerine OLE DB ve SQL Server tarafından sağlanan yerel hata bilgilerini döndürür (SQLXML'nin önceki sürümlerinde olduğu gibi). Bu davranışı istemiyorsanız, DWORD türünde bu kayıt defteri anahtarının değeri 0 olarak ayarlanmalıdır (varsayılan değer 1'dir).

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

    Varsayılan olarak, SQLXML kapsayan ayraçlar olmadan SQL Server GUID değerlerini döndürür. Guid değerinin küme ayraçlarıyla döndürülmesini istiyorsanız (örneğin, {bazı GUID}), bu kayıt defteri anahtarının değeri 1 olarak ayarlanmalıdır (varsayılan değer 0'dır).

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

    Varsayılan olarak, XML ayrıştırıcısı verileri yüklediğinde, xml 1.0 kurallarına göre boşluklar normalleştirilir. Bu durum, verilerinizdeki bazı boşluk karakterlerinin kaybolmasına neden olur. Bu nedenle, ayrıştırma sonrasında verilerinizin metinsel gösterimi aynı olmayabilir, ancak veriler ayrıştırıcı olarak aynıdır.

    Veri içindeki boşluk karakterlerini koruma seçeneğine sahip olabilmeniz için bu anahtar sunulmaktadır. Bu kayıt defteri anahtarını ekler ve değerini 0 olarak ayarlarsanız, öznitelik değerleri olması durumunda XML'deki boşluk karakterleri (LF, CR ve sekme) kodlanmış olarak döndürülür. Öğe değerleri söz konusu olduğunda yalnızca CR kodlanmış olarak döndürülür.

    Mesela:

    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>  
    

Geçiş Sorunları

Eski SQLXML uygulamalarınızın SQLXML 4.0'a geçişini etkileyebilecek sorunlar aşağıdadır.

ADO ve SQLXML 4.0 Sorguları

SQLXML'nin önceki sürümlerinde IIS sanal dizinleri ve SQLXML ISAPI filtresi kullanılarak URL tabanlı sorgu yürütme desteği sağlanmıştır. SQLXML 4.0 kullanan uygulamalar için bu destek artık kullanılamaz.

Bunun yerine, SQLXML sorguları, şablonları ve güncelleştirme birimleri, ilk olarak Microsoft Veri Erişim Bileşenleri (MDAC) 2.6 ve sonraki sürümlerde kullanıma sunulan ActiveX Veri Nesneleri(ADO) için SQLXML uzantıları kullanılarak yürütülebilir.

Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.

SQL Server 2005'te Kullanıma Sunulan SQLXML 3.0 ISAPI ve Veri Türleri için Desteklenebilirlik

ISAPI desteği SQLXML 4.0'dan kaldırıldığından, Çözümünüz SQL Server 2005'te (9.x) kullanıma sunulan xml veri türüveya kullanıcı tanımlı veri türleri (UDF) ve Web tabanlı erişim gibi gelişmiş veri yazma özelliklerini gerektiriyorsa, SQLXML yönetilen sınıfları veya başka bir HTTP işleyicisi türü gibi başka bir çözüm kullanmanız gerekir. SQL Server 2005 için Yerel XML Web Hizmetleri gibi.

Alternatif olarak, bu tür uzantılara ihtiyacınız yoksa SQL Server 2005 (9.x) ve SQL Server 2008 (10.0.x) yüklemelerine bağlanmak için SQLXML 3.0 kullanmaya devam edebilirsiniz. SQLXML 3.0 ISAPI desteği bu sonraki sürümlerde çalışır, ancak SQL Server 2005'te (9.x) sunulan xml veri türünü veya UDT türü desteğini desteklemez veya tanımaz.

Geçici Dosyalar için XML Toplu Yükleme Güvenlik Değişiklikleri

SQLXML 4.0 ve SQL Server için, toplu yükleme işlemini yürüten kullanıcıya XML Toplu Yükleme dosyası izinleri verilir. Okuma ve Yazma izinleri dosya sisteminden devralınır. SQLXML ve SQL Server'ın önceki sürümlerinde, SQLXML altında XML Toplu Yükleme güvenliği sağlanmayan ve herkes tarafından okunabilen geçici dosyalar oluştururdu.

XML için Client-Side Geçiş Sorunları

Yürütme altyapısındaki değişiklikler nedeniyle, SQL Server temel tablo için meta verilerde FOR XML sorgusu SQL Server 2000 (8.x) altında yürütülürse döndürülecek değerlerden farklı değerler döndürebilir. Böyle durumlarda, FOR XML sorgu sonuçlarının istemci tarafı biçimlendirmesi, sorgunun hangi sürüme göre çalıştırıldığına bağlı olarak farklı çıkışlara sahip olur.

BIR FOR XML sorgusu, xml veri türü sütunu üzerinden SQLXML 3.0 kullanılarak istemci tarafında yürütülürse, sonuçlardaki veriler tam kapsamlı bir dize olarak geri döner. SQLXML 4.0'da sağlayıcı olarak SQL Server Yerel İstemcisi (SQLNCLI11) belirtilirse veriler XML olarak döndürülür.