Aracılığıyla paylaş


SOAP yanıtı iletisi yapısı

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

SOAP yanıtı yerine, tarafından sağlanan proxy sınıfları kullanılarak ayrıştırılamıyor istiyorsanız, bu konu, SOAP yanıtı iletisi yapısını açıklar. Visual Studio 2005.

örnek tarafından döndürülen BIR SOAP yanıtı iletisi SQL Server aşağıdakilerden bir veya daha fazlasını içerebilir:

  • sonuçlar küme SELECT sorgularını.

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

  • Satır sayısı.Sorgulamadan etkilenen satırların sayısıdır.

  • Çıkış parametresi değerleri.

  • Hata iletileri veya uyarılar.

Aşağıdakiler tarafından döndürülen SOAP yanıtı yapısının bir parçası olan SQL Server bir saklı yordamdan 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 kaydırılan <MethodNameResponse> SOAP gövdesi öğe. The <MethodNameResponse> element may include the following alt elements:

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

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

&lt;MethodNameResult&gt; Öğe

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.

Içinde <MethodNamesonuçlar> sonuçlar gibi seri hale öğe:

  • SELECT deyiminin sonuç olarak alınmış bir <SqlRowSet> Öğe. sonuçlar içinde seri hale <SqlRowSet> öğe kullanın DiffGram seri hale getirme biçimi. The DiffGram format is introduced in the DataSet component of the Microsoft .NET Framework.(Bitiş noktası etkin şemasıyla oluşturulursa) Bu durumda, yanıt ayrıca bir XSD şeması önce verileri içerir.Içinde Visual Studio 2005 istemci, sonuçlar olarak gönderilir System.Data.DataSet nesneler.

    Not

    SOAP sonuçlar içine yüklenemedi. System.Data.DataSet Kullanmakta olduğunuz zaman nesneleri Visual Studio 2005, SQL Server Satır içi şemalar, istemcilerine veren SOAP yanıtlarında eklemeniz gerekir. Bu davranış, bitiş noktaları etkinleştirilmişse, SCHEMA anahtar kullanılmazsa veya SCHEMA belirterek, bitiş noktası oluşturduğunuzda STANDARD =.Daha fazla bilgi için bkz:(Transact-SQL) son NOKTA oluşturun.

  • Sonucu, bir SELECT...IÇIN XML deyim içinde kaydırılan bir <SqlXml> Öğe. Birden çok sonuç kümesi (örneğin, birden çok SELECT... IÇIN XML sorgularla bir saklı yordam) döndürülmezse, her sonuç kümesini kendi içinde sarılır <SqlXml> Öğe. Ayrıca, her sonuç sonunda bir <SqlRowCount> Öğe. Bu öğe, aşağıdaki yanıtı parçası gösterildiği gibi sorgulamadan etkilenen satırların sayısını verir:

    <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 XMLSCHEMA seçeneğini belirleyerek, sorgu bir XSD şeması istekleri XSD şeması ilk alt öğesinden döndürülen <SqlXml> Öğe.

    Içinde Visual Studio 2005 istemci, sonuçlar olarak gönderilir System.Xml.XmlElement nesneler.

  • Dönüş kodu değerleri saklı yordamlar ve kullanıcı tanımlı işlevler, içinde kaydırılan bir <SqlResultCode> öğe, aşağıdaki yanıtı parçası 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>
    

    Içinde Visual Studio 2005 Dönüş kodu, istemci, bir nesne olarak döndürülür.

  • SQL Server hata iletileri, uyarıları ve diğer bilgi iletileri, alınmış bir <SqlMessage> öğe, aşağıdaki SOAP yanıtı parçası 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>
    

    SOAP yanıtı aşağıdaki bölümü çalıştırarak döndürdü GetCustomerInfo saklı yordamını.Bu saklı yordam hakkında daha fazla bilgi için bkz: Yerel XML Web Hizmetleri istekleri gönderme için örnek uygulamalar. Ilk INSERT deyim, saklı yordam başarısız olur.Bu durum, 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 sonucu olarak döndürülen bir SqlMessage türü nesneler.

&lt;OutputParameter&gt; Öğe

Her Çıkış parametresinin değeri, öğenin içinde kaydırılmış döndürülür.Öğe adının, çıktı parametresi adıdır.Bu öğe sonra görüntülenen Not <MethodNameSonuç> öğe olarak son alt <MethodNameResponse> öğe; bu, aşağıdaki SOAP yanıtı parçası gösterilir. Iki çı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>