Re: Continue SP after Database Access Failure
From: Ami Levin (XXX_NOSPAM___XXX__amlevin_at_mercury.com)
Date: 02/01/05
- Next message: PaulaPompey: "RE: Performance Q : IN Statement"
- Previous message: Jacco Schalkwijk: "Re: Display most recent date?"
- In reply to: PaulaPompey: "Continue SP after Database Access Failure"
- Next in thread: Ami Levin: "typo error..."
- Reply: Ami Levin: "typo error..."
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 1 Feb 2005 13:04:25 +0200
Hi Paula,
Error handling in SQL Server 2000 is "somewhat" problematic as you have
seen.
For these cases, I use the following trick of nesting the execution scopes:
USE tempdb
select * from nonexist
select 'passed after error', @@error
go
-- batch was terminated without returning the message
exec ('select * from nonexist')
select 'passed after error', @@error
go
-- inner scope was aborted, outer scope continued
create proc p3 as
select * from nonexist
select 'passed after error', @@error
go
exec p1
-- batch was terminated without returning the message
create proc p2 as
select * from nonexist
go
create proc p3 as
exec p2
select 'passed after error', @@error
go
exec p3
-- inner procedure was aborted, outer procedure continued
This should work for most cases although some errors will stop and rollback
the whole batch including outer scopes.
I have tested it with inaccessible linked servers and it worked fine for me.
See the following thread for more details:
HTH
Ami
"PaulaPompey" <PaulaPompey@discussions.microsoft.com> wrote in message
news:752B8EAA-BC40-4B0D-B413-EFC8F94189A7@microsoft.com...
> Over night we take a copy of various live SQL databases onto another SQL
> server for reporting purposes.
> I have a stored procedure that compares the latest live data against the 1
> day old copies to ensure that they are up to date.
> I connect to the live databases using linked servers.
> Here's where the problem is - when one of the external links is down or
one
> of the live databases is offline the stored procedure has an error and
stops.
> How can I test within the stored procedure that the database on the linked
> server is available? Then, based on the result, carry out an action?
> Even a simple select statement against an unavailable database halts the
> whole SP even though I've tried breaking the code down into seperate
> transactions, checking for @@ERROR > 0, SET XACT_ABORT OFF, the code still
> fails with "SQL Server does not exist or access denied."
>
> Any advice greatly appreciated.
>
- Next message: PaulaPompey: "RE: Performance Q : IN Statement"
- Previous message: Jacco Schalkwijk: "Re: Display most recent date?"
- In reply to: PaulaPompey: "Continue SP after Database Access Failure"
- Next in thread: Ami Levin: "typo error..."
- Reply: Ami Levin: "typo error..."
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|