Re: Log everything

From: Agoston Bejo (gusz1_at_freemail.hu)
Date: 02/15/05


Date: Tue, 15 Feb 2005 11:31:25 +0100

OK, from the trace I can see that probably an error occurs in a trigger. The
trigger does a rollback tran (and with that makes it impossible to put some
debugging info into a table, because that insert statement gets rolled back,
too - even if issued after the rollback trans statement). After that, it
calls RAISERROR with an (quite verbose) error message. I added every event
to the trace but cannot see anything from this RAISERROR statement. It would
be very good to somehow acquire the error message.

Basically, the structure of the trigger is this:

alter trigger tr_ins_upd
on table1
for insert, update
begin
    [check for inconsistency]
    [if there is any:]
        [rollback tran]
        [insert debug info into debug table] -- no effect
        [raiserror(debug_info)] -- cannot see in SQL Profiler's
trace
    [end if]
end

So, how can I
- get to see the error message sent by RAISERROR
- insert some info into a table that doesn't get rolled back by that
'rollback tran' statement

Thx,
Agoston

"David Gugick" <davidg-nospam@imceda.com> wrote in message
news:#65ljozEFHA.1084@tk2msftngp13.phx.gbl...
> Agoston Bejo wrote:
> > Hi,
> > I've been using SQL Server for a while, but I'm fairly new to this
> > area.
> > I would like to log every error that occurs in every stored procedure
> > that I call (actually from an ASP page, but I don't think this is
> > relevant). One of my stored procedures sometimes (as far as I can
> > determine, quite non-deterministically) fails, but from ASP all the
> > error description I get is this:
> >
> > [Microsoft][ODBC SQL Server Driver][SQL Server]Distributed transaction
> > completed. Either enlist this session in a new transaction or the NULL
> > transaction.
> >
> > My stored proc. calls quite a lot other procedures, so it would be
> > good to be able to determine where exactly the error occurs during
> > executing. (And I wouldn't like to put "IF @@ERROR <> 0" blocks after
> > every rows in every stored procedure.)
> > So the best would be if I could see in a log which stored procedures
> > were called with which values and which procedure failed in which
> > row. Is it (or at least part of it) possible?
> >
> > Thx,
> > Agoston
>
> You can use Profiler and the SQL Trace API to watch SQL execution and
> see Errors/Exceptions. Tracing may be extensive, so I would recommend
> you research creating a server-side trace. You'll have to trap
> SP:Starting and SP:StmtStarting events and SQL:StmtStarting/RPC:Starting
> if you have any SQL running outside a SP. You 'll also have to add
> Errors and Exceptions. You're going to collect a lot of data, so if
> these errors are intermittent, be prepared for very large trace files
> (possibly gigabytes if the database is active). If you can limit the
> trace to a specific user/application it might help to eliminate some
> data collection.
>
> --
> David Gugick
> Imceda Software
> www.imceda.com
>



Relevant Pages

  • Re: Log everything
    ... from the trace I can see that probably an error occurs in a trigger. ... trigger does a rollback tran (and with that makes it impossible to put some ... >> I would like to log every error that occurs in every stored procedure ...
    (microsoft.public.sqlserver.server)
  • Re: (Using Lab-Volt System) Have the books, how do I get a trace on my 465 Tektronix oscilloscop
    ... any scope will show 60Hz sort of sinewave ... Given a trace, it will merely allow ... won't get a display, and if the sweep is really fast, you may ... each time it receives a trigger voltage of suitable level. ...
    (sci.electronics.basics)
  • Re: Can I use profiler to watch a table from an application?
    ... If they insert/update multiple rows within one statement you will have to ... code your trigger in such a way as to handle that. ... If the applications insert and update data via stored procedures you could ... I would stay away from the profiler trace idea. ...
    (microsoft.public.sqlserver.tools)
  • bug in tty ldisc and friends
    ... I can easily trigger a bug in the tty code by enabling the event tracers. ... Call Trace: ... mean need resched set and the last is ... report an incorrect preempt count. ...
    (Linux-Kernel)
  • Re: (Using Lab-Volt System) Have the books, how do I get a trace on my 465 Tektronix oscilloscop
    ... I already own the books "How to Use Oscilloscopes and Other Test ... Given a trace, it will merely allow ... won't get a display, and if the sweep is really fast, you may ... each time it receives a trigger voltage of suitable level. ...
    (sci.electronics.basics)