Aracılığıyla paylaş


Xml veri türü ve clr kullanıcı tanımlı türler

Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.

Yerel xml Web Hizmetleri ile başlayan, SQL Server 2005, türleri gibi geçirerek xml veri türü veya ortak dil çalışma zamanı (clr) kullanıcı tanımlı türler gerektiren bazı ek geliştirme görevleri.Bu konuda çalışmak xml Web Hizmetleri tabanlı uygulamaları etkinleştirmek için gerçekleştirmek gerekir görevleri açıklar xml ve CLR kullanıcı tanımlı tür Web yöntemleri ve parametreli sorgular.

Not

Bir temel olduğunu kabul edilir bilgi de yerel xml Web hizmetleri dağıtma, SQL Server.Bu bitiş noktaları oluşturma, sql programlama Web yöntemi olarak gösteriyor ve temel Web istemci uygulamaları yazma gibi görevler hakkında bilgi sahibi olan içerir SQL Server kullanan diğer yerleşik sql türleri.Yoksa bu bilgileri gözden geçirmek için görmek istediğiniz Yerel xml Web Hizmetleri Kavramları, Yerel xml Web hizmetleri dağıtma, ve Yerel xml Web hizmetlerini kullanmaya yönelik en iyi yöntemler.

Veri türü Web istemci uygulamalarında xml işleme

Doğru şekilde işlemek Web istemci uygulaması için xml veri türü, bazı ayrıntılar değişir aşağıdaki senaryolardan biri uygulandığı üzerine:

  • Bir Web yöntem bir bitiş noktası olarak sergilenen bir saklı yordam ile çalışıyor.

  • Kullandığınız sql toplu iş iş (sqlbatch) işlevselliğini parametreleştirilmiş sorguyu yürütmek için son nokta.

Bu senaryolar parametreli örneklerini gerektirir xml veri türü kullanarak ve doldurma ele alınması için bir myEndpoint**:: xml** yapısı.Bu yapıdaki myEndpoint fiili bitiş noktasının adını gösterir kullanılacağı örnekleri xml veri türü geçirilen üzerinden istemci tarafı kodu.Bu yapı son nokta Web proxy sınıf bildirildi.

The myEndpoint**::xml** structure is created when you add or update the Web reference to the endpoint that exposes the Web method in the Visual Studio project.Ancak, üretilen başlangıç aşamasında doldurmanız gerekir myEndpoint**:: xml** özel Web proxy sınıf yapısında buna bağlı olup olmadığı yazılı xml ya da xml untyped istemci tarafı uygulama kodunda kullandığınıza bağlı.

Türlenmemiş için xml veri türü parametresi örnekleri Web yöntemleri, myEndpoint**:: xml** yapısını sergiler bunları türü bir dizi System.Xml.XmlNode proxy sınıfında.Bu nedenle, içinde geçirmek için bir xml veri türü parametresi örnek, el ile oluşturmak ve xml düğümleri bir dizi doldurmak veya tercihen kullandığınız System.Xml.XmlDocumentFragment Bunu yapmak için.Daha fazla bilgi için bkz: Veri türü Visual Studio istemci uygulamalarında xml ile çalışma.

Yazdığınız için xml Web yöntemleri içinde özel bir tür Web proxy sınıfında üretilen ve aşağıdaki biçime göre adı: word ile birleştirilmiş yöntem adı Type ve sonra bunu adı parametresi.Örneğin, Web yöntem adıyla sergilenen GetXmlInfo ve bir xml adlı parametre veri türü T sunulan özel bir tür Web proxy sınıfının adını olacaktır için geçirme yazılı xml olarak giriş, GetXmlInfoTypeT.Bu özel bir tür devraldığı myEndpoint**:: xml** yapısı, bu nedenle, benzer şekilde yazılı xml olarak dizisi sunar System.Xml.XmlNode.

İşleme xml veri türü Parametrelendirilmiş sorgularda ile çalışmaya benzer xml Web yöntemi bir özel durum ile veri türü: yazılı xml tarafından istemci aynı tür kullanarak geçirilmelidir (myEndpoint**:: xml**) ile untyped xml kullanılır.

Sonra myEndpoint**:: xml** yapısı hazır, xml veri türü örnek sonra açık bir dizi gibi System.Xml.XmlNode içinde tanımlanan bir yapıya ve bu sırayla içinde bulunan SqlParameter.Value nesnesi.

Parametreli Sorgu için sql toplu iş işlevini gerektirir.Bu, aşağıdaki ek hazırlıklar içerebilir:

  • Bitiş noktası sql üzerinde etkinleştirilmiş olması gerekir.Bu toplu işlem anlamına gelir = etkin bitiş noktası oluşturulduğunda veya değiştirildiğinde kullanıldı.

  • Web proxy sınıfında, sqlbatch() yöntem olacaktır dahil bir Web baþvurusu eklenen veya güncelleştirilen bir toplu iş iş etkin bitiş noktası.

Yazılı xml parametreleri için sqlbatch() Web proxy sınıfında yöntem, herhangi bir ek özellik ayarı içerecek şekilde güncelleştirilir (XmlSchemaCollectionDatabase, XmlSchemaCollectionName, XmlSchemaCollectionOwningSchema), ilgili xml şemasını kaydetmek için koleksiyon için System.Data.SqlClient.SqlParameter nesne.

Not

Her ikisi de Web yöntemleri ve açığa çıkaran sorguları parametreli xml veri türü, burada bir System.Data.DataSet (bölümü nesnelerinin bir dizisi) çıkış döndürülür ve içeriğinin bulunduğu konumdaki bir DataGrid görselleştirmek için sonuçlar istemci uygulamasında, DataSet Web proxy türü kullanmaz (myEndpoint:: xml) ama clr System.Data.SqlTypes.SqlXml yazın.

clr kullanıcı tanımlı türler Web istemci uygulamaları ile işleme

clr kullanıcı tanımlı türler Web istemci uygulamasında işlemek için aşağıdaki adımları tamamlamanız gerekir:

  1. CLR kullanıcı tanımlı tür yazma ve MyType.dll gibi bir dll olarak derlemek.

    De Visual Studio 2005, clr kullanıcı tanımlı tür (sınıf veya yapı birimi) yazma ve derlemek için bir derleme.Türü derleme uymak zorunda SQL Server gereksinimleri için uygulama kullanıcı tanımlı türleri.Bu yüklü ve kayıtlı derleme sağlar bir örnek , SQL Server.Daha fazla bilgi için "Uygulama UDTs gereksinimleri" konusuna bakın. in clr kullanıcı tanımlı türler.

  2. Uygulanan bir xml seri hale getirici yardımcı DLL'i oluşturmak üzere IXMLSerializable, Sgen.exe bağlı olarak çalışan derleme dll.Bu MyType.XmlSerializers.dll gibi bir ad olacaktır.

    Çalışmak clr kullanıcı tanımlı tür için temel gereksinimleri yanı sıra SQL Serverclr türü kullanıcı tanımlı xml seri hale getirilebilir de yerel xml Web Hizmetleri ile çalışmak için de olmalı, SQL Server.Daha fazla bilgi için "xml seri hale getirme" konusuna bakın. in clr kullanıcı tanımlı türler.

  3. dll türü derleme yükleme adresindeki örnek, SQL Server kullanarak create assembly.

    Uygulamaz yoksa IXMLSerializable ve tamamlanan adım 2 ' de xml seri hale getirici yüklemeniz gerekecek dll adresindeki örnek, Yahoo! companion SQL Server kullanarak DERLEME oluşturmak.

  4. CLR kullanıcı tanımlı tür xml içine seri hale getirmek ve içine dahil bir myEndpoint**:: xml** benzer şekilde önceki bölümde açıklanan yapısı.

    After the CLR user-defined type is installed at the server, to pass an instance of that CLR user-defined type into SQL Server from a Native XML Web Services client application, you first must serialize the CLR user-defined type into XML format and include it into an XML structure.

    Aşağıdaki kod bir CLR kullanıcı tanımlı tür xml biçiminde seri hale getirmek ve bir xml öğesi koymak gösterilmiştir (System.Xml.XmlElement).

    // Create the user-defined type class on the client.
    SqlString s = new SqlString("0:0");
    UdtClientApp.Point pnt = Point.Parse(s);
    // Invoke the method and pass in a user-defined type.You will need
    // to convert this to XmlElement before you can pass it to SQL Server.
    System.IO.MemoryStream writer = new System.IO.MemoryStream();
    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(UdtClientApp.Point));
    serializer.Serialize(writer, pnt);
    writer.Seek(0, System.IO.SeekOrigin.Begin);
    System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
    xmlDoc.Load(writer);
    System.Xml.XmlElement udtXml = xmlDoc.DocumentElement;
    
  5. CLR kullanıcı tanımlı tür istemci üzerinde var olmasına göre da CLR kullanıcı tanımlı tür xml biçimi bir çıkış parametresinden serisi kaldırılamadı geri kendi türü kullanıcı tanımlı biçim olabilir.

    Aşağıdaki kod, kullanıcı tanımlı tür xml clr kullanıcı tanımlı tür istemci tarafı kodu dön serisini gösterilmiştir.Bu örnekte, CLR kullanıcı tanımlı tür olan Point.

    Object[] results = proxy.GetPointUdt(Convert.ToInt16(textBox1.Text), ref udtXml);
    //Deserialze the XML into user-defined type.
    TextReader reader = new StringReader(udtXml.OuterXml);
    // pnt was already defined as UdtClientApp.Point pnt = Point.Parse(s);
    pnt = (UdtClientApp.Point) serializer.Deserialize(reader);
    

    CLR kullanıcı tanımlı tür istemci üzerindeki untyped xml olarak kullanıyorsanız, bu seri kaldırma işlemi gerçekleştirmek sahip değil unutmayın.

clr kullanıcı tanımlı türler de geçirilen parametre olarak parametreli hale getirilmiş bir sorguya aynı şekilde için açıklandığı gibi xml veri türü.CLR kullanıcı tanımlı tür xml seri hale getirilmiş biçimde geçirilen gerekir istemci kullanarak myEndpoint**:: xml** türü.

Farklı değerler küme clr kullanıcı tanımlı türleri ile ilgili bir Parametreli Sorgu ile System.Data.SqlClient.SqlParameter yapısı.Örneğin, aşağıdaki özellik ayarları, clr kullanıcı tanımlı türler için kullanılır:

  • The SqlDbType property must be set to a value of Udt.

  • The ClrTypeName property must be set to the SQL Server three-part qualified name (MyDatabase**.MySchema.**MyUdtType) of the installed user-defined type as it is registered at the instance of SQL Server.