There have been questions raised about how to make InfoPath work with SQL 2005 native web services.  Some people have been hitting the following error in InfoPath when trying to use SQL 2005 native web services as a data source:

    WSDLOperation: The parameters for element parameters in operation GetSystemDefinition could not be created. The parameters could not be expanded HRESULT=0x80004005: Unspecified error
     - WSDLOperation: Initializing of the input message failed for operation GetSystemDefinition HRESULT=0x80004005: Unspecified error
     - WSDLPort: An operation for port ETL could not be initialized HRESULT=0x80004005: Unspecified error
     - WSDLPort: Analyzing the binding information for port ETL failed HRESULT=0x80004005: Unspecified error
     - WSDLService: Initialization of the port for service ETL failed HRESULT=0x80004005: Unspecified error
     - WSDLReader: Analyzing the WSDL file failed HRESULT=0x80004005: Unspecified error

One such scenario was raised in the posting on MSDN SQL Server Data Access forum:

We are continuing to work with the InfoPath team to provide the best possible user experience, but due to the different release schedules it may require some workarounds in the meantime.

With the current release of both products (InfoPath 2003 and SQL 2005), the following are things to consider while developing an InfoPath form using the SQL 2005 native web services support:

  • The default WSDL needs to be updated so InfoPath will not report the above error.  This can be done by:
    • creating a custom WSDL generator (see Books Online for a sample)
    • Or, save the WSDL as a file (using IE) and comment out '<xsd:element ref="xsd:schema" />' in the file
  • A single InfoPath form basically translates a fixed XML data structure into a nice display format.  This corresponds nicely to one single XML data column in a SQL data table.
  • Retrieval of a single XML value from the data table for display in the InfoPath form can be done using SQL Functions.
  • Updates and Inserts from the InfoPath form can be done using a SQL Stored Procedure that will then determine if it is just an update or an insert and execute the appropriate query.

This is in effect the scenario mentioned in the forum posting, which is the main type of scenario that is currently possible when using InfoPath with SQL 2005 over web services.

Jimmy Wu, SQL Server Protocols
Disclaimer: This posting is provided “AS IS” with no warranties, and confers no rights