
I am need help (system error)
Alex,
Quote:
> I satrted stored procedure, and i get this message from SQL Server.
> And my connection was terminated.
> SqlDumpExceptionHandler: Process 9 generated fatal exception c0000005
> EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating
> this process.
Q. I am getting a message 'dbprocess dead' or 'language exec' from SQL
Server.
I am seeing an 'Exception Access Violation' message in the SQL errorlog.
I am getting *.DMP files in the <sql>\log directory.
I am getting "symptom dump" messages.
What is going on?
(v1.8 1999.09.10)
A. Basically SQL is probably internally gpf'ing/AV'ing (same thing) - you
should see messages to this effect in the SQL errorlog. There are only three
reasons for this in order of ascending probability :-
1. A database corruption - you can check for this with the dbcc checkdb,
newalloc and checkcatalog commands.
2. A hardware problem - usually duff memory.
3. A bug in the SQL Server code (this is the most likely cause - database
corruptions rarely cause gpf's, and hardware errors normally show up in other
ways). This is the Microsoft C code that makes up SQLSERVR.EXE and dll's, NOT
your TSQL code. If you have SQL code that causes an AV it is Microsoft's bug,
not yours. There is nothing anyone outside of MS support can do to help you.
Assuming it's not a database corruption, then follow the following diagnostic
process :-
1. Check the Microsoft Kb on Technet (if you don't have Technet then order it
now!). Also check the on-line website at www.microsoft.com/support which is
more up to date than Technet. Search on kbbug AND AV AND SQL to find all
documented AV bugs - note AV's are a generic symptom of lots of bugs. Many
articles contain workarounds but it is usually difficult to match up the stack
traces to see if it is relevant to your situation.
2. Are you on the latest version of SQL Server and the latest service pack?
MS fix a lot of AV errors in every service pack, so it is definitely worth
getting current. If you're not on the latest service pack then that is the
first thing MS are going to ask you to do if you contact them anyway. If you
can't apply it to the production system immediately then apply the latest SP on
a test system and see if it fixes the problem.
3. Check the SQL errorlog and save away all the messages - especially anything
telling you what SQL was being executed at the time.
4. Check the \<sql>\LOG directory for SQLxxxx.DMP files that may have been
created. These contain information on what SQL Server was doing at the time,
module stack traces etc. Save these away for MS support as necessary. (Though
there is a PRINTDMP.EXE utility supplied the output of this is still of no use
to anyone unless they have the SQLServer C source code)
5. Can you re-create the problem at will? If the SQL being run is not shown
in the errorlog, then find out what the user/developer was doing at the time.
Use SQL Trace to capture the actual SQL code being run if you can. If you
can't recreate it, it's still worth reporting as long as you have the
errorlog(s) and dump file(s).
6. If you can re-create the problem, then see if you can create a reproduction
script to show the problem. This needs to be capable of running on a brand-new
install of SQL Server on a new database. Therefore it needs to contain all
tables, user defined data types, triggers, views etc. needed to show the
problem. If it needs data then try and keep this to a minimum. (If the
script/data is reasonably short then post to one of the
newsgroups and one of MVP's can report it to MS for you). Alternatively
re-write your query (if possible) to run against the pubs or northwind (v7
only) database as these are always installed with SQL Server and come complete
with a variety of tables, foreign keys, indices, data....
7. Can you work around the problem by re-writing the SQL? Even with a
reproduction script MS are unlikely to turn a fix around quickly - unless you
are a multi-million dollar customer. And even then you wouldn't just be
applying one small fix, it would be a latest build with lots of other fixes too
- it won't have been regression tested, so it could cause more damage than it
fixed anyway.
8. If SQL terminates from the Access Violation and there is no dump file
produced then a possible cause of the problem is the use of SQL Trace. There
is a bug in this (fixed in 6.5 SP5 and above) that can terminate the SQL Server
being monitored. Another cause of this is heavy deadlocking - also fixed in
SP5a.
9. Report the problem to MS PSS. PLEASE do this even if you can workaround
it. Unless MS get these bug reports then they can't fix them. (With a repro
script an MVP will do it for you). Your call fee WILL be re-imbursed as all
calls about bugs are free. (However, on the "normal" support-line the person
answering the phone can't know it's a bug, so they'll need your credit card
details anyway). For PSS contacts see
http://support.microsoft.com/support/supportnet/default.asp
MS will need you to supply :-
SQL Errorlog(s)
NT event log(s) - if any NT errors were occuring at the time
TSQL code running at the time
Details of hardware, version of NT, servicepacks etc. WINMSDP output is
good for this.
With SQL 7 there is a new utility that will garner most of this information for
you automatically. It is called sqldiag -
sqldiag -U<login> -P<password> -O<output filename>
Neil Pike MVP/MCSE. Protech Computing Ltd
(Please reply only to newsgroups)
SQL FAQ (374 Entries) see
or www.ntfaq.com/sql.html (+ ntfaq download)
or http://www.sql-server.co.uk