Aracılığıyla paylaş


soap yanıtı iletisi yapısı

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.

Tarafından sağlanan proxy sınıfları kullanmak yerine soap yanıtı ayrıştırmak isterseniz, bu konuda soap yanıtı iletisi yapısı açıklar Visual Studio 2005.

' In örnek tarafından döndürülen soap yanıtı iletisi SQL Server birini veya daha fazlasını içerebilir:

  • Sonuçlar küme select sorguları için.

  • Saklı yordamlar ve kullanıcı tanımlı işlevler için kodunu döndürür.

  • Satır sayısı.Bu sorgu tarafından etkilenen satırların sayısıdır.

  • Çıkış parametresi değerleri.

  • Hata iletileri veya uyarılar.

Aşağıdaki tarafından döndürülen soap yanıtı yapısının bir parçası olan SQL Server bir saklı yordam çalıştırdıktan sonra:

<?xml version="1.0" encoding="utf-8" ?> 
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  ...>
  <SOAP-ENV:Body>
  <method:MethodNameResponse>
  <method:MethodNameResult  
 xsi:type="sqlresultstream:SqlResultStream">
<!-- 
  the results are returned here
-->
  </method:MethodNameResult>
  <method:OutputParam>Value</method:OutputParam> 
  </method:MethodNameResponse>
  </SOAP-ENV:Body>
  </SOAP-ENV:Envelope>

Bir işlemin sonuçlar içinde sarılır <MethodNameResponse> öğesi soap gövdesi.The <MethodNameResponse> element may include the following child elements:

  • <MethodNameResult> Sonuçlar, satır sayısı değerlerini ve hata iletileri ve uyarılarını içerir.

  • <OutputParameter> döndürülen saklı yordamlar tarafından çıkış parametreleri içerir.

&lt;MethodNameResult&gt; öğesi

The results of an operation are returned inside the <MethodNameResult> element where MethodName is either the name of a stored procedure or user-defined function or is sqlbatch for ad hoc batch queries.sqlbatch is the method used to run ad hoc queries.

İçinde <MethodNamesonucu> sonuçlar şu şekilde sıralanmış öğe:

  • Bir seçim sonucunu deyim içinde kaydırılan bir <SqlRowSet> öğesi.sonuçlar olarak seri hale <SqlRowSet> öğesini kullanan DiffGram seri hale getirme biçimi.The DiffGram format is introduced in the DataSet component of the Microsoft .NET Framework.Bu durum, (etkin şema ile bitiş noktası oluşturulduğunda) yanıtı da xsd şeması önce verileri içerir.De Visual Studio 2005 istemci, sonuçlar verilir System.Data.DataSet nesneler.

    Not

    soap sonuçlar içine yüklemek için System.Data.DataSet , kullanmakta olduğunuz nesneleri Visual Studio 2005, SQL Server soap yanıt veren istemciler için satır içi şemalar içermelidirBu davranış bitiş noktaları için şema anahtar sözcük atlama veya şema belirterek etkin bitiş noktası oluşturduğunuzda = standard.Daha fazla bilgi için bkz: Bitiş noktası (Transact-sql) oluştur.

  • Bir seçim sonucu...xml için deyim içinde kaydırılan bir <SqlXml> öğesi.Birden çok sonuç kümeleri (örneğin, bir saklı yordam birden çok select ile sonuçsuz kalırsaxml sorguları için), her sonuç küme kendi içinde paketlenir <SqlXml> öğesi.Ayrıca, her sonuç sonunda bir <SqlRowCount> öğesi.Bu öğe, aşağıdaki yanıtı parçasında gösterildiği gibi sorgu tarafından etkilenen satırların sayısını döndürür:

    <tns:MethodNameResponse>
      <tns:MethodNameResult 
    xsi:type="sqlsoaptypes:SqlResultStream">
         <sqlresultstream:SqlXml xsi:type="sqlsoaptypes:SqlXml" >
     <SqlXml>
        <!-- XML result --> 
     </SqlXml>
    </sqlresultstream:SqlXml>
    <sqlresultstream:SqlRowCount xsi:type="sqlrowcount:SqlRowCount">
       <sqlrowcount:Count>NoOfRowsAffected</sqlrowcount:Count> 
    </sqlresultstream:SqlRowCount>
    <sqlresultstream:SqlXml xsi:type="sqlsoaptypes:SqlXml" >
      <SqlXml>
        <!-- XML Document that maps to XMLElement object 
       in the client--> 
      </SqlXml>
    </sqlresultstream:SqlXml>
    <sqlresultstream:SqlRowCount xsi:type="sqlrowcount:SqlRowCount">
       <sqlrowcount:Count>NoOfRowsAffected</sqlrowcount:Count> 
    </sqlresultstream:SqlRowCount>
    
         <!-- more results ...-->
      </tns:MethodNameResult>
      <tns:OutputParam>Value</tns:OutputParam> 
    </tns:MethodNameResponse>
    

    select...xml için sorgu xmlschema seçeneğini belirleyerek bir xsd şeması ister xsd şeması ilk alt öğesi döndürülen <SqlXml> öğesi.

    De Visual Studio 2005 istemci, sonuçlar verilir System.Xml.XmlElement nesneler.

  • Saklı yordamlar ve kullanıcı tanımlı işlevler dönüş kodu değerleri içinde sarılır bir <SqlResultCode> öğesi içinde aşağıdaki yanıtı bölümü gösterildiği gibi:

    <tns:MethodNameResponse>

      <tns:MethodNameResult 
    xsi:type="sqlsoaptypes:SqlResultStream">
      <!-- 
        results 
      -->
         <sqlresultstream:SqlResultCode
    xsi:type="sqlsoaptypes:SqlResultCode">
       ReturnCodeValue
         </sqlresultstream:SqlResultCode> 
      </tns:MethodNameResult>
      <tns:OutputParam>Value</tns:OutputParam> 
    </tns:MethodNameResponse>
    

    De Visual Studio 2005 istemci, dönüş kodunu bir nesnesi olarak döndürülür.

  • SQL Serverhata iletileri, uyarıları ve diğer bilgilendirme iletileri içinde kaydırılan bir <SqlMessage> öğesi, aşağıdaki soap yanıtı bölümü gösterildiği gibi:

    <tns:MethodNameResponse>
      <tns:MethodNameResult xsi:type="sqlresultstream:SqlResultStream">
         <sqlresultstream:SqlMessage>
        <!-- Error message returned as SqlMessage object 
     in the client --> 
    </sqlresultstream:SqlMessage>
     ...
      </tns:MethodNameResult>
      <!-- followed by one or more return parameters ->
       ...
    </tns:MethodNameResponse>
    

    Aşağıdaki soap yanıtı parçası çalışan tarafından döndürülen GetCustomerInfo saklı yordam.Bu konuda bilgi için saklı yordam, bkz: Yerel xml Web Hizmetleri istekleri göndermek için örnek uygulamalar.Saklı yordam içindeki ilk INSERT deyim başarısız olur.Bu, aşağıdaki yanıtı neden olur.

    <method:GetCustomerInfoResponse>
     <method:GetCustomerInfoResult 
        xsi:type="sqlresultstream:SqlResultStream">
        <sqlresultstream:SqlMessage>
         <sqlresultstream:SqlMessage xsi:type="sqlmessage:SqlMessage">
    <sqlmessage:Class>16</sqlmessage:Class> 
    <sqlmessage:LineNumber>12</sqlmessage:LineNumber> 
    <sqlmessage:Message>Cannot insert the value NULL into column 
    'CompanyName', table 'Northwind.dbo.Customers'; 
    column does not allow nulls. INSERT fails. 
    </sqlmessage:Message> 
         <sqlmessage:Number>515</sqlmessage:Number> 
         <sqlmessage:Procedure>GetCustomerInfo</sqlmessage:Procedure> 
         <sqlmessage:Server>SQLServerName</sqlmessage:Server> 
         <sqlmessage:Source>MicrosofTransact-
    SQL/9.0</sqlmessage:Source> 
         <sqlmessage:State>2</sqlmessage:State> 
        </sqlresultstream:SqlMessage>
        <sqlresultstream:SqlRowCount xsi:type="sqlrowcount:SqlRowCount">
     <sqlrowcount:Count>0</sqlrowcount:Count> 
        </sqlresultstream:SqlRowCount> 
        <sqlresultstream:SqlResultCode 
      xsi:type="sqlsoaptypes:SqlResultCode">-6 
        </sqlresultstream:SqlResultCode> 
      </method:GetCustomerInfoResult>
      <!-- followed by one or more output parameters ->
     </method:GetCustomerInfoResponse>
    </tns:MethodNameResponse>
    

    Visual Studio 2005'te istemci, bu sonuçlar verilir bir SqlMessage nesneleri yazın.

&lt;OutputParameter&gt; öğesi

Her çıktı parametre değeri öğesinin kaydırılan döndürülür.Öğe adı çıkış parametresi adıdır.Bu öğe tıklatıldıktan sonra Not <MethodNamesonucu> öğesi son alt öğesi olarak <MethodNameResponse> öğesi; Bu aşağıdaki soap yanıtı parçası gösterilir.İki çıkış parametreleri döndürülür.

<tns:MethodNameResponse>
   <tns:MethodNameResult xsi:type="sqlresultstream:SqlResultStream">
     <!-- results, error messages and warnings -->
   </tns:MethodNameResult>
   <tns:OutputParam1>Value</tns:OutputParam1> 
   <tns:OutputParam2>Value</tns:OutputParam2> 
</tns:MethodNameResponse>