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
Microsoft Fabric'te SQL veritabanı
Bu makalede, XML verilerini sorgulamak için belirtmeniz gereken sorgu seçenekleri açıklanmaktadır. Ayrıca, XML örneklerinin veritabanlarında depolandığında korunmamış bölümlerini de açıklar.
Gerekli sorgu seçeneklerini ayarlama
Xml veri türü yöntemlerini kullanarak xml türü sütunlarını veya değişkenlerini sorguladığınızda, aşağıdaki seçenekler gösterildiği gibi ayarlanmalıdır.
| SET Seçenekleri | Gerekli Değerler |
|---|---|
| ANSI_NULLS | ON |
| ANSI_PADDING | ON |
| ANSI_WARNINGS | ON |
| ARITHABORT | ON |
| CONCAT_NULL_YIELDS_NULL | ON |
| SAYISAL_YUVARLAMADURDUR | OFF |
| TIRNAKLI_BELİRLEYİCİ | ON |
Seçenekler gösterildiği gibi ayarlanmamışsa , xml veri türü yöntemlerindeki sorgular ve değişiklikler başarısız olur.
Xml örneğinin korunmamış özellikleri
SQL Server, XML örneğinin içeriğini korur, ancak XML örneğinin XML veri modelinde önemli kabul edilmeyen yönlerini korumaz. Bu, alınan bir XML örneğinin sunucuda depolanan örnekle aynı olmayabileceği, ancak aynı bilgileri içerebileceği anlamına gelir.
XML bildirimi
Örnekteki XML bildirimi, örnek veritabanında depolandığında korunmaz. Örneğin:
CREATE TABLE T1 (Col1 int primary key, Col2 xml);
GO
INSERT INTO T1 values (1, '<?xml version="1.0" encoding="windows-1252" ?><doc></doc>');
GO
SELECT Col2
FROM T1;
Sonuç <doc/>.
GIBI <?xml version='1.0'?>XML bildirimi, XML verilerini bir xml veri türü örneğinde depolarken korunmaz. Bu tasarım gereğidir. Xml bildirimi () ve öznitelikleri (sürüm/kodlama/tek başına) veriler xml türüne dönüştürüldükten sonra kaybolur. XML bildirimi, XML ayrıştırıcısına yönelik bir yönerge olarak değerlendirilir. XML verileri dahili olarak ucs-2 olarak depolanır. XML örneğindeki diğer tüm PI'ler korunur.
Öznitelik sırası
XML örneğindeki özniteliklerin sırası korunmaz. Xml türü sütununda depolanan XML örneğini sorguladığınızda, sonuçta elde edilen XML'deki özniteliklerin sırası özgün XML örneğinden farklı olabilir.
Öznitelik değerlerinin etrafındaki tırnak işaretleri
Öznitelik değerlerinin etrafındaki tek ve çift tırnak işaretleri korunmaz. Öznitelik değerleri veritabanında ad ve değer çifti olarak depolanır. Tırnak işaretleri depolanmaz. XML örneğine karşı bir XQuery çalıştırıldığında, üretim sonucu elde edilen XML, öznitelik değerlerinin çevresinde çift tırnak işaretleri ile serileştirilir.
DECLARE @x xml;
-- Use double quotation marks.
SET @x = '<root a="1" />';
SELECT @x;
GO
DECLARE @x xml;
-- Use single quotation marks.
SET @x = '<root a=''1'' />';
SELECT @x;
GO
Her iki sorgu da = <root a="1" />döndürür.
Ad alanı ön ekleri
Ad alanı ön ekleri korunmaz. Xml türündeki bir sütunda XQuery belirttiğinizde, serileştirilmiş XML sonucu farklı ad alanı ön ekleri döndürebilir.
DECLARE @x xml;
SET @x = '<ns1:root xmlns:ns1="abc" xmlns:ns2="abc">
<ns2:SomeElement/>
</ns1:root>';
SELECT @x;
SELECT @x.query('/*');
GO
Sonuçtaki ad alanı ön eki farklı olabilir. Örneğin:
<p1:root xmlns:p1="abc"><p1:SomeElement/></p1:root>