The request failed to run because the batch is aborted, this can be caused by abort signal sent from client, or another request is running in the same
The complete error message:
"The request failed to run because the batch is aborted, this can be caused by abort signal sent from client, or another request is running in the same session, which makes the session busy."
I have recently experienced an unusual situation I had to troubleshoot and googling the error did not lead me anywhere so hopefully this blog post may help others.
Following an upgrade from SQL Server 20018 R2 to SQL Server 2016 sp2 we have started to experience many time outs. There are five application servers working against this instance and the time out received crossed all servers. The load on the server was not high, there were no long running queries and it did not seem a case of bad plans possibly due to the new CE (Cardinality Estimator) that was now in use. However, to eliminate that I have modified the compatibility level back to 100 (SQL 2008) that immediately puts into work the old CE but still many time outs still experienced negatively effecting the service my client provides.
Typically, when a client issues a command to the database engine and that command crosses the Command Timeout value defined for that command (.net SqlClient lib defaults to 30 sec) the client terminates the connection and disconnects from SQL Server. This raises Event No. 162 within SQL Server which is “User Error Message” that can be captured. The 162 Event is simply an event that is raised when an exception occurs in the database engine. To check the event you can start a Profiler trace with a blank template and select on the User Error Message event under the Errors and Warnings category. Then just issue a SELECT 1/0 command and you will see that the “Divide by zero error” that has been displayed in your SSMS window has also been captured by your trace.
Having said that let’s go back to the issue itself. We received many time outs but the unusual thing was that there was no 162 event indicating a time out as there always is which made troubleshooting difficult and confusing. The only message captured using the 162 event was the message at the very top of this post
After some digging it turned out that the server NIC malfunctions and in SQL Server Event No. 16 called “Attention” has been raised. The description for that event from the documentation is: “Occurs when attention events, such as client-interrupt requests or broken client connections, happen”.
When monitoring SQL Server you should consider monitoring this event.
Note the Transaction ID is the same for the both events: User Error Message and Attention
For a post that discusses other aspects of time out see this old post of mine.