Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure 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)