У меня есть веб-сервис, который имеет несколько методов доступа к данным. Этот конкретный метод только читает данные. Это не делает никаких вставок, обновлений, и никакие триггеры не выполняются, чтобы вызвать вставку или обновление. Мы получили сообщение об ошибке, которая была записана как ограничение нарушения первичного ключа. Как я уже говорил, этот метод ничего не вставляет. Вот стек вызовов:
The METHOD_NAME() method failed with an unhandled exception.
[EXCEPTIONS] #1:SqlException(Violation of PRIMARY KEY constraint 'CONSTRAINT_NAME'. Cannot insert duplicate key in object 'dbo.TABLE_NAME'.
The statement has been terminated.) [SITE] Logged in Anon.DLL [DETAILS] Level=Error
[STACK] at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader()
at Anon.DataAccess.Common.DataAccessBase`4.ExecuteReader() in Anon\DataAccessBase.cs:line 183
at Anon.DataAccess.GetSomething() in Anon\SomethingDal.cs:line 31
at Anon.Service.Manager.GetSomething() in Anon\Manager.cs:line 53
at Anon.WebService.GetSomething() in Anon\WebService.asmx.cs:line 47
В этом сервисе есть другие методы, которые могут генерировать эту ошибку, но их придется вызывать отдельно. Как я могу получить ошибку вставки, когда я только делаю чтение. Возможно ли, что оба метода были запущены одновременно, и ошибка была передана неверному соединению?
Это работает правильно в 99,9999% случаев, но в этот раз что-то произошло.