Aracılığıyla paylaş


İstemci Tarafı XML Formatlama (SQLXML 4.0)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Bu konu, istemci tarafı XML biçimlendirme hakkında bilgi verir. İstemci tarafı biçimlendirme, orta katmanda XML'in biçimlendirilmesini ifade eder.

Uyarı

Bu konu, istemci tarafında FOR XML maddesinin kullanımı hakkında ek bilgi sağlar ve FOR XML maddesine zaten aşina olduğunuzu varsayar. FOR XML hakkında daha fazla bilgi için bkz. FOR XML kullanarak XML Oluşturma.

SQLNCLI11, SQL Server 2005'te (9.x) tanıtılan veri türlerini tam olarak anlayan SQL Server sağlayıcısının ilk sürümüydü. SQLOLEDB sağlayıcısıyla XML için istemci tarafı davranışı, xml veri tiplerini dizgi olarak ele alacaktır.

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

İstemci tarafında XML belgeleri biçimlendirme

Bir istemci uygulaması aşağıdaki sorguyu yürüttüğünde:

SELECT FirstName, LastName  
FROM   Person.Contact  
FOR XML RAW  

... Sorgunun yalnızca bu kısmı sunucuya gönderilir:

SELECT FirstName, LastName  
FROM   Person.Contact  

Sunucu sorguyu çalıştırır ve istemciye bir satır kümesi (FirstName ve LastNamecolumns içerir) döner. Orta katman daha sonra FOR XML dönüşümünü satır kümesine uygular ve istemciye XML biçimlendirmesini döndürür.

Benzer şekilde, bir XPath sorgusu çalıştırdığınızda, sunucu satır setini istemciye döndürür ve istemci üzerindeki satır kümesine FOR XML EXPLICIT dönüşümü uygulanarak istenen XML biçimlendirmesi oluşturulur.

Aşağıdaki tablo, istemci tarafı FOR XML ile belirtebileceğiniz modları göstermektedir.

İstemci tarafı FOR XML modu Comment
RAW İstemci tarafı veya sunucu tarafı FOR XML olarak belirtildiğinde aynı sonuçlar verir.
IÇ İÇE Sunucu tarafında XML AUTO moduna benzer.
AÇIK Sunucu tarafı XML açık moduna benzer.

Uyarı

AUTO modunu belirtip istemci tarafı XML biçimlendirme isterseniz, tüm sorgu sunucuya gönderilir; yani, XML biçimlendirme sunucuda gerçekleşir. Bu kolaylık için yapılır, ancak NESTED modunun oluşturulan XML belgesinde temel tablo isimlerini öğe adları olarak döndürdüğünü unutmayın. Yazdığınız bazı uygulamalar temel tablo isimleri gerektirebilir. Örneğin, bir kayıtlı prosedürü çalıştırıp ortaya çıkan verileri bir Veri setine (Microsoft .NET Framework'te) yükleyebilir, ardından tablolardaki verileri güncellemek için bir DiffGram oluşturabilirsiniz. Böyle bir durumda, temel tablo bilgisine ihtiyacınız olur ve NESTED modu kullanmanız gerekir.

İstemci tarafı XML formatlamanın faydaları

Aşağıda, istemci üzerinde XML biçimlendirmenin bazı avantajları yer almaktadır.

Sunucuda tek bir satır kümesi döndüren prosedürleriniz varsa, istemci tarafı FOR XML dönüşümünü isteyerek XML oluşturabilirsiniz.

Örneğin, aşağıdaki depolanmış prosedürü ele alalım. Bu prosedür, AdventureWorks veritabanındaki Person.Contact tablosundan çalışan isimlerini ve soyadlarını döndürür:

IF EXISTS (SELECT name FROM sysobjects  
   WHERE name = 'GetContacts' AND type = 'P')  
   DROP PROCEDURE GetContacts  
GO  
CREATE PROCEDURE GetContacts  
AS  
    SELECT   FirstName, LastName  
    FROM     Person.Contact  

Aşağıdaki örnek XML şablonu depolanmış prosedürü çalıştırır. FOR XML cümlesi, saklanan prosedür adından sonra belirtilir.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <sql:query client-side-xml="1">  
    EXEC GetContacts FOR XML NESTED  
  </sql:query>  
</ROOT>  

İstemci tarafı-xml özözniteliği şablonda 1 (doğru) olarak ayarlandığından, depolanan prosedür sunucuda yürütülür ve sunucu tarafından döndürülen iki sütunlu sıra kümesi orta katmanda XML'e dönüştürülür ve istemciye geri döner. (Burada sadece kısmi bir sonuç gösterilmiştir.)

 <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <Person.Contact FirstName="Gustavo" LastName="Achong" />   
  <Person.Contact FirstName="Catherine" LastName="Abel" />  
</ROOT>  

Uyarı

SQLXMLOLEDB Sağlayıcı veya SQLXML Yönetilen Sınıfları kullandığınızda, ClientSideXml özelliğini kullanarak istemci tarafı XML biçimlendirme talep edebilirsiniz.

İş yükü daha dengeli.

İstemci XML formatlamasını yaptığı için, iş yükü sunucu ile istemci arasında dengelenir ve sunucu başka şeyler yapabiliyor.

İstemci Tarafı XML Formatlamayı Desteklemek

İstemci tarafı XML biçimlendirme işlevselliğini desteklemek için SQLXML şunları sağlar:

  • SQLXMLOLEDB Sağlayıcısı

  • SQLXML Yönetilen Sınıfları

  • Geliştirilmiş XML şablon desteği

  • SqlXmlCommand.ClientSideXml property

    İstemci tarafı biçimlendirmesini, SQLXML yönetilen sınıfların bu özelliğini true olarak ayarlayarak belirtebilirsiniz.

Geliştirilmiş XML Şablon Desteği

SQL Server 2005 (9.x) ile itibaren, SQL Server'daki XML şablonu, istemci tarafı-xml özniteliğinin eklenmesiyle geliştirilmiştir. Bu öznitelik doğru olarak ayarlanırsa, istemci üzerinde XML biçimlendirilir. Bu şablon özniteliğinin, SQLXMLOLEDB Sağlayıcı'ya özgü ClientSideXML özelliğiyle işlevsellik açısından aynıdygyny unutmayın.

Uyarı

Eğer SQLXMLOLEDB Sağlayıcı kullanan bir ADO uygulamasında bir XML şablonu çalıştırırsanız ve şablonda hem istemci tarafı-xml özniteliğini hem de sağlayıcı ClientSideXML özelliğini belirtirseniz, şablonda belirtilen değer öncelikli olur.

Ayrıca Bkz.

İstemci Tarafı ve Sunucu Tarafı XML Formatlama Mimarisi (SQLXML 4.0)
XML (SQL Server) IÇIN
XML Güvenlik Değerlendirmeleri IÇIN (SQLXML 4.0)
SQLXML 4.0'da xml Veri Tipi Desteği
SQLXML Yönetilen Sınıflar
İstemci Tarafı vs. Sunucu Tarafı XML Formatlama (SQLXML 4.0)
SqlXmlCommand Object (SQLXML Managed Classes)
XML Verileri (SQL Server)