Товарищ к вам отправил - ODBCDataReader

Привалов
Дата: 06.12.2005 13:29:08
Значит проблема такая. Есть кривая база и к ней старый и тоже кривой ODBC драйвер. Тем не менее. При попытке вставить запись присходит следующее. (Запись в табл. добавляется).

Server Error in '/Report' Application.
System.Web.Services.Protocols.SoapException: Server was unable to process request. --->
System.Data.Odbc.OdbcException: ERROR [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function at 

System.Data.Odbc.OdbcConnection.HandleError(HandleRef hrHandle, SQL_HANDLE hType, RETCODE retcode) at
System.Data.Odbc.OdbcDataReader.NextResult() at
System.Data.Odbc.OdbcDataReader.FirstResult() at
System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method) at
System.Data.Odbc.OdbcCommand.ExecuteNonQuery() at
WSReport.WSReport.UpdateIssues(String UID, String pass, DataSet ds)
in c:\inetpub\wwwroot\wsreport\wsreport.asmx.cs:line 638 --- End of inner exception stack trace ---

Description: An unhandled exception occurred during the execution of the current web request.
Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException:
Server was unable to process request. --->
System.Data.Odbc.OdbcException: ERROR [IM001] [Microsoft][ODBC Driver Manager] Driver does not support this function at
System.Data.Odbc.OdbcConnection.HandleError(HandleRef hrHandle, SQL_HANDLE hType, RETCODE retcode) at
System.Data.Odbc.OdbcDataReader.NextResult() at
System.Data.Odbc.OdbcDataReader.FirstResult() at
System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method) at
System.Data.Odbc.OdbcCommand.ExecuteNonQuery() at
WSReport.WSReport.UpdateIssues(String UID, String pass, DataSet ds)
in c:\inetpub\wwwroot\wsreport\wsreport.asmx.cs:line 638 --- End of inner exception stack trace ---

Source Error:

Line 217:        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UpdateIssues",
RequestNamespace="http://tempuri.org/",
ResponseNamespace="http://tempuri.org/",
Use=System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
Line 218:        public void UpdateIssues(string UID, string pass, System.Data.DataSet ds) {
Line 219:            this.Invoke("UpdateIssues", new object[] {
Line 220:                        UID,
Line 221:                        pass,


Source File: c:\inetpub\wwwroot\Report\Web References\wrWSReport\Reference.cs    Line: 219

непонятное поведение ODBCDataReader'a - зачем-то после вызова ExecuteNonQuery он пытается что-то вытащить из базы (а ведь кроме кол-ва обработанных строк функция ничего вернуть не должна). В качестве экмеримента в обработке SELECT'a вызывали руками NextResult - ошибка про неподдерживаемую функцию.
Обернуть вызов в try-finally тоже ничего не даёт, да и стоит решить проблему а не погасить её проявления. А проблема, похоже, такова - Reader хочет получить то, что ему не даёт база, т.е. нужно как-то ему объяснить, что ничего ждать не нужно
Этот же вопрос был на http://www.sql.ru/forum/actualthread.aspx?tid=236499
но один перец сюда послал. почему - не знаю