Description of SOAP interoperability issues that may occur when you use the Systinet Web Application Services Platform (WASP) 4.6 development toolset together with native HTTP SOAP support in SQL Server 2005 (894711)



The information in this article applies to:

  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition

INTRODUCTION

The native HTTP SOAP support that is introduced in Microsoft SQL Server 2005 lets you enable the Transact-SQL programmability of SQL Server as Web methods. For example, you can enable the stored procedures or the user-defined functions as Web methods. This functionality lets SQL Server 2005 become available as a SOAP 1.2-compliant server. A SOAP 1.2-compliant server is reachable over HTTP by both SOAP 1.1 clients and SOAP 1.2 clients.

This article describes SOAP interoperability issues that may occur when you use the Systinet Web Application Services Platform (WASP) 4.6 development toolset to develop and maintain SOAP client applications.

MORE INFORMATION

If you want to use the Systinet WASP 4.6 development toolset to create applications that communicate with SQL Server 2005, we highly recommend that you use the simple Web Services Description Language (WSDL) document instead of the default (extended) WSDL document. You can retrieve the simple WSDL document by including the "?wsdlsimple" query string at the end of the URL. For example, use a URL that is similar to the following URL:

http://server/endpoint?wsdlsimple

SQL Server 2005 requires correct Microsoft Windows NT authentication before you can retrieve the WSDL document. For the Systinet WASP 4.6 development toolset to import the WSDL document, you may have to retrieve the WSDL document and then save the WSDL document as a file or as a Web page.

The following interoperability issues may occur when you use the Systinet WASP 4.6 development toolset together with native HTTP SOAP support in SQL Server 2005.

You may have to modify the XML Schema definition for the SqlRowSet complex type

For the Systinet WASP 4.6 development toolset to correctly parse the default (extended) WSDL document that SQL Server 2005 generates, you may have to modify the XML Schema definition language (XSD) schema definition for the SqlRowSet complex type. The XML Schema definition that SQL Server 2005 generates is similar to the following code example.
<xsd:complexType name="SqlRowSet">
 <xsd:sequence maxOccurs="unbounded">
  <xsd:element ref="xsd:schema" />
  <xsd:any /> 
 </xsd:sequence>
</xsd:complexType>
You may have to modify the schema to the following code example.
<xsd:complexType name="SqlRowSet">
 <xsd:sequence>
  <xsd:any minOccurs="0" maxOccurs="unbounded" /> 
 </xsd:sequence>
</xsd:complexType>

The proxy class code that is generated by the Systinet WASP 4.6 development toolset WSDL tool requires a workaround to correctly compile

The Systinet WASP 4.6 development toolset WSDL tool generates a C++ client-side proxy class code for the SqlTransaction type in the following struct statement.
struct EXTENDEDDLL_API Type
{
     enum Type {
          Begin
        , Commit
        , Rollback
        , EnlistDTC
        , Defect
    };
};
This code causes a compile error, and you receive the following error message:

error C2580: redefinition of class name 'Type::Type'
To work around this issue, change the name of the struct definition. Then, apply the name change to the rest of the code as shown in the following code example.
struct EXTENDEDDLL_API SqlTransactionType
{
    enum Type {
          Begin
        , Commit
        , Rollback
        , EnlistDTC
        , Defect
    };
};

The Systinet WASP 4.6 development toolset generates the client proxy code where the deserialization function for a type that is defined as a sequence of the <xsd:any> element causes a runtime exception

A runtime exception occurs when the Systinet WASP 4.6 development toolset parses the server response. Because the Systinet WASP 4.6 development toolset requires a strongly defined structure, some generic structures such as the SqlRowSet type and the SqlXml type are not correctly handled by the WASP-generated deserialization function. The SqlRowSet type and the SqlXml type are defined as a sequence of the <xsd:any> element.

Regardless of whether the default (extended) WSDL document or the simple WSDL document is used to generate the client-side code, the server response format is defined as the <xsd:any> element. The WASP-generated deserialization function looks for an element that is named "any" instead of interpreting the concept of the <xsd:any> element.

The Systinet WASP 4.6 development toolset handles the SQL Server Datetime data type as the WASP DateTime data type

The Systinet WASP 4.6 development toolset handles the SQL Server Datetime data type that is defined in the default (extended) WSDL document and translates the SQL Server Datetime data type into the WASP DateTime data type. The WASP DateTime data type serializes values into the xsd:datetime data type format. However, the SQL Server Datetime data type does not support the same serialization format as the xsd:datetime data type.

To work around this issue, use the simple WSDL document where the SQL Server Datetime data type is defined as the xsd:string data type.

The Systinet WASP 4.6 development toolset handles the sql_variant data type as an XML element, and this causes the client application to throw an exception

The Systinet WASP 4.6 development toolset handles the sql_variant data type as an XML element. The XML element does not allow for text values. Therefore, the client application throws an exception when the client application tries to parse the server response and looks for the "start element" text value.

The WASP-generated class serializer for the typed XML parameter data type throws an access violation when the WASP client application sends the request

At runtime, when the WASP client application is serializing the typed XML parameter class into XML, an access violation is thrown.

The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

Modification Type:MajorLast Reviewed:3/11/2006
Keywords:kbhowto kbinfo KB894711 kbAudDeveloper kbAudITPRO