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ı
XML (Transact-SQL) makalesinde açıklandığı gibi, SQL Server xml veri türü aracılığıyla XML verilerinin yerel depolamasını sağlar. İsteğe bağlı olarak, XML şema koleksiyonu aracılığıyla XSD şemalarını bir değişken veya xml türü sütunuyla ilişkilendirebilirsiniz. XML şema koleksiyonu içeri aktarılan XML şemalarını depolar ve ardından aşağıdakileri yapmak için kullanılır:
XML örneklerini doğrulama
XML verilerini veritabanında depolandığı şekilde yazın
XML şema koleksiyonu, veritabanındaki bir tablo gibi bir meta veri varlığıdır. Bunları oluşturabilir, değiştirebilir ve bırakabilirsiniz. CREATE XML SCHEMA COLLECTION (Transact-SQL) deyiminde belirtilen şemalar otomatik olarak yeni oluşturulan XML şema koleksiyonu nesnesine aktarılır. ALTER XML SCHEMA COLLECTION (Transact-SQL) deyimini kullanarak veritabanındaki mevcut bir koleksiyon nesnesine ek şemaları veya şema bileşenlerini içeri aktarabilirsiniz.
Yazılan ve Yazılmamış XML makalesinde açıklandığı gibi, şemanın ilişkilendirildiği bir sütunda veya değişkende depolanan XML, örnek verileri için gerekli veri türü bilgilerini sağladığından, yazılan XML olarak adlandırılır. SQL Server, veri depolamayı iyileştirmek için bu tür bilgileri kullanır.
Sorgu işleme altyapısı ayrıca, tür denetimi ve sorguları ve veri değişikliklerini iyileştirmek için şemayı kullanır.
Ayrıca SQL Server, XML örneğini doğrulamak için xml türüne sahip ilişkili XML şema koleksiyonunu kullanır. XML örneği şemayla uyumluysa veritabanı, örneğin tür bilgileriyle sistemde depolanmasına izin verir. Aksi takdirde örneği reddeder.
Veritabanında depolanan şema koleksiyonunu almak için iç işlev XML_SCHEMA_NAMESPACE kullanabilirsiniz. Daha fazla bilgi için bkz. Depolanan XML Şema Koleksiyonunu Görüntüleme.
XML değişkenlerini, parametrelerini ve sütunlarını yazmak için XML şema koleksiyonunu da kullanabilirsiniz.
Şema koleksiyonlarını yönetmek için DDL
Veritabanında XML şema koleksiyonları oluşturabilir ve bunları xml türündeki değişkenler ve sütunlarla ilişkilendirebilirsiniz. VERITABANıNDAki şema koleksiyonlarını yönetmek için SQL Server aşağıdaki DDL deyimlerini sağlar:
CREATE XML SCHEMA COLLECTION (Transact-SQL) Şema bileşenlerini veritabanına aktarır.
ALTER XML ŞEMA KOLEKSIYONU (Transact-SQL) Varolan bir XML şema koleksiyonundaki şema bileşenlerini değiştirir.
DROP XML ŞEMA KOLEKSIYONU (Transact-SQL) Tam bir XML şema koleksiyonunu ve tüm bileşenlerini siler.
BIR XML şema koleksiyonunu ve içerdiği şemaları kullanmak için, önce CREATE XML SCHEMA COLLECTION deyimini kullanarak koleksiyonu ve şemaları oluşturmanız gerekir. Şema koleksiyonu oluşturulduktan sonra , xml türünde değişkenler ve sütunlar oluşturabilir ve şema koleksiyonunu bunlarla ilişkilendirebilirsiniz. Bir şema koleksiyonu oluşturulduktan sonra, meta verilerde çeşitli şema bileşenleri depolanır. Var olan şemalara daha fazla bileşen eklemek veya var olan bir koleksiyona yeni şemalar eklemek için ALTER XML SCHEMA COLLECTION'ı da kullanabilirsiniz.
Şema koleksiyonunu bırakmak için DROP XML SCHEMA COLLECTION deyimini kullanın. Bu, koleksiyonda bulunan tüm şemaları bırakır ve koleksiyon nesnesini kaldırır. Bir şema koleksiyonunu bırakabilmeniz için önce DROP XML SCHEMA COLLECTION (Transact-SQL) bölümünde açıklanan koşulların karşılanması gerekir.
Şema bileşenlerini anlama
CREATE XML SCHEMA COLLECTION deyimini kullandığınızda, çeşitli şema bileşenleri veritabanına aktarılır. Şema bileşenleri şema öğelerini, öznitelikleri ve tür tanımlarını içerir. DROP XML SCHEMA COLLECTION deyimini kullandığınızda, koleksiyonun tamamını kaldırırsınız.
CREATE XML SCHEMA COLLECTION, şema bileşenlerini çeşitli sistem tablolarına kaydeder.
Örneğin, aşağıdaki şemayı göz önünde bulundurun:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="uri:Cust_Orders2"
xmlns="uri:Cust_Orders2" >
<xsd:attribute name="SomeAttribute" type="xsd:int" />
<xsd:complexType name="SomeType" />
<xsd:complexType name="OrderType" >
<xsd:sequence>
<xsd:element name="OrderDate" type="xsd:date" />
<xsd:element name="RequiredDate" type="xsd:date" />
<xsd:element name="ShippedDate" type="xsd:date" />
</xsd:sequence>
<xsd:attribute name="OrderID" type="xsd:ID" />
<xsd:attribute name="CustomerID" />
<xsd:attribute name="EmployeeID" />
</xsd:complexType>
<xsd:complexType name="CustomerType" >
<xsd:sequence>
<xsd:element name="Order" type="OrderType"
maxOccurs="unbounded" />
</xsd:sequence>
<xsd:attribute name="CustomerID" type="xsd:string" />
<xsd:attribute name="OrderIDList" type="xsd:IDREFS" />
</xsd:complexType>
<xsd:element name="Customer" type="CustomerType" />
</xsd:schema>
Önceki şema, veritabanında depolanabilen farklı bileşen türlerini gösterir. Bunlar SomeAttribute, SomeType, OrderType, CustomerType, Customer, Order, CustomerID, OrderID, OrderDate, RequiredDate ve ShippedDate içerir.
Bileşen kategorileri
Veritabanında depolanan Şema bileşenleri aşağıdaki kategorilere ayrılır:
ÖĞE
ÖZNİTELİK
TÜR (basit veya karmaşık türler için)
Öznitelik Grubu
MODELGROUP
Örneğin:
SomeAttributebir ÖZNITELIK bileşenidir.SomeType,OrderTypeveCustomerTypeTİP bileşenleridir.Customerbir ELEMENT bileşenidir.
Veritabanına bir şema aktardığınızda, SQL Server şemanın kendisini depolamaz. Bunun yerine, SQL Server çeşitli bileşenleri ayrı ayrı depolar. Diğer bir ifadeyle <, Schema> etiketi depolanmaz, yalnızca içinde tanımlanan bileşenler korunur. Tüm şema öğeleri korunmaz. Şema< etiketi bileşenlerinin >varsayılan davranışını belirten öznitelikler içeriyorsa, bu öznitelikler aşağıdaki tabloda gösterildiği gibi içeri aktarma işlemi sırasında içindeki şema bileşenlerine taşınır.
| Öznitelik adı | Davranış |
|---|---|
| attributeFormDefault | Form özniteliği, henüz mevcut olmadığı şemadaki tüm öznitelik bildirimlerine uygulanır ve değer attributeFormDefault özniteliğinin değerine ayarlanır. |
| elementFormDefault | Şemada henüz mevcut olmayan tüm öğe bildirimlerine uygulanan form özniteliği ve değeri elementFormDefault özniteliğinin değerine ayarlanır. |
| blockDefault | blok özniteliği, zaten bulunmadığı tüm öğe bildirimlerine ve tür tanımlarına uygulanır ve değeri blockDefault özniteliğinin değerine ayarlanır. |
| finalDefault | Final özniteliği, henüz mevcut olmadığı durumlarda tüm öğe bildirimlerine ve tür tanımlamalarına uygulanır ve değeri finalDefault özniteliğinin değerine ayarlanır. |
| targetNamespace | Hedef ad alanına ait bileşenler hakkındaki bilgiler meta verilerde depolanır. |
XML şema koleksiyonundaki izinler
Aşağıdakileri yapmak için gerekli izinlere sahip olmanız gerekir:
XML şema koleksiyonunu oluşturma/yükleme
XML şema koleksiyonunu değiştirme
XML şema koleksiyonunu bırakma
XML şema koleksiyonunu kullanarak xml türü sütunları, değişkenleri ve parametreleri yazın ya da tablo veya sütun kısıtlamalarında kullanın
SQL Server güvenlik modeli, her nesne üzerinde CONTROL iznine izin verir. Bu iznin vereni nesnedeki diğer tüm izinleri alır. Nesnenin sahibi de nesne üzerinde tüm izinlere sahiptir.
Nesne üzerinde CONTROL izninin sahibi ve iznini veren, nesne üzerinde herhangi bir izin verebilir. Kullanıcı, sahip değilse ve CONTROL izni yoksa bile, WITH GRANT OPTION belirtildiğinde bir nesne üzerinde izin verebilir. Örneğin, Kullanıcı A'nın, WITH GRANT OPTION aracılığıyla XML Şema Koleksiyonu S üzerinde REFERANS iznine sahip olduğunu, ancak S üzerinde başka hiçbir iznin olmadığını varsayalım. Kullanıcı A, Şema Koleksiyonu S üzerinde Kullanıcı B'ye REFERANS izni verebilir.
Güvenlik modeli ayrıca XML şema koleksiyonları oluşturma ve kullanma veya sahipliğini bir kullanıcıdan diğerine aktarma izinlerine de izin verir. Aşağıdaki makalelerde XML şema koleksiyonu izinleri açıklanmaktadır.
XML Şema Koleksiyonunda İzinLer Verme
Bu makalede, XML şema koleksiyonu oluşturma izinleri verme ve XML şema koleksiyonu nesnesi üzerinde izin verme işlemleri açıklanır.
XML Şema Koleksiyonu İzinlerini İptal Etme
Bu makalede, XML şema koleksiyonunun oluşturulmasını önlemek için iptal izinlerinin nasıl kullanılabileceğini ve XML şema koleksiyonu nesnesindeki izinlerin nasıl iptal edilebileceği açıklanır.
XML Şema Koleksiyonunda İzinleri Reddetme
Bu makalede, XML şema koleksiyonu oluşturma izinlerinin nasıl reddedileceğini ve XML şema koleksiyonu nesnesi üzerinde iznin nasıl reddedileceğini açıklar.
XML şemaları ve şema koleksiyonları hakkında bilgi alma
XML şema koleksiyonları katalog görünümünde numaralandırılır sys.xml_schema_collections. XML şema koleksiyonu sys sistem tarafından tanımlanır. Açıkça yüklemek zorunda kalmadan tüm kullanıcı tanımlı XML şema koleksiyonlarında kullanılabilecek önceden tanımlanmış ad alanlarını içerir. Bu liste, xml, xs, xsi, fn ve xdt ad alanlarını içerir. Diğer iki katalog görünümü, sys.xml_schema_namespacesher XML şema koleksiyonundaki tüm ad alanlarını numaralandıran ve sys.xml_componentsher XML şemasındaki tüm XML şema bileşenlerini numaralandıran görünümüdür.
yerleşik işlevi XML_SCHEMA_NAMESPACE, schemaName, XmlSchemacollectionName, namespace-uribir xml veri türü örneği verir. Bu örnek, önceden tanımlanmış XML şemaları dışında bir XML şema koleksiyonunda yer alan şemalar için XML şema parçaları içerir.
XML şema koleksiyonunun içeriğini aşağıdaki yollarla numaralandırabilirsiniz:
XML şema koleksiyonları için uygun katalog görünümlerinde Transact-SQL sorguları yazın.
Yerleşik işlevi
XML_SCHEMA_NAMESPACE()kullanın. Bu işlevin çıkışına xml veri türü yöntemleri uygulayabilirsiniz. Ancak, temel alınan XML şemalarını değiştiremezsiniz.
Bunlar aşağıdaki örneklerde gösterilmiştir.
Örnekler
XML şema koleksiyonundaki XML ad alanlarını listeleme
XML şema koleksiyonu myCollectioniçin aşağıdaki sorguyu kullanın:
SELECT XSN.name
FROM sys.xml_schema_collections XSC JOIN sys.xml_schema_namespaces XSN
ON (XSC.xml_collection_id = XSN.xml_collection_id)
WHERE XSC.name = 'myCollection';
XML şema koleksiyonunun içeriğini listeleme
Aşağıdaki ifade, ilişkisel şema dbo içindeki XML şema koleksiyonu myCollection'nin içeriğini sıralar.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection');
Koleksiyondaki tek tek XML şemaları, hedef ad alanı XML_SCHEMA_NAMESPACE() için üçüncü bağımsız değişken olarak belirtilerek xml veri türü örnekleri olarak elde edilebilir. Bu, aşağıdaki örnekte gösterilir.
XML şema koleksiyonundan belirtilen şemayı çıktı olarak alma
Aşağıdaki deyim, ilişkisel şema içindeki XML şema koleksiyonundan pretend hedef ad alanıyla birlikte XML şemasını oluşturur.
SELECT XML_SCHEMA_NAMESPACE (N'dbo', N'myCollection',
N'https://www.microsoft.com/was-books')
XML şemalarını sorgulama
XML şema koleksiyonlarına yüklediğiniz XML şemalarını aşağıdaki yollarla sorgulayabilirsiniz:
XML şeması ad alanları için katalog görünümlerinde Transact-SQL sorguları yazın.
XML şemalarınızı depolamak ve bunları XML türü sistemine yüklemek için xml veri türü sütunu içeren bir tablo oluşturun. XML veri türü yöntemlerini kullanarak XML sütununu sorgulayabilirsiniz. Ayrıca, bu sütunda bir XML dizini oluşturabilirsiniz. Ancak, bu yaklaşımla uygulamanın XML sütununda depolanan XML şemaları ile XML türü sistemi arasında tutarlılık sağlaması gerekir. Örneğin, XML şema ad alanını XML türü sisteminden bırakırsanız tutarlılığı korumak için tablodan da bırakmanız gerekir.