Printable Version of Topic

Click here to view this topic in its original format

HTMLHelp Forums _ Databases _ Deliberate DSN-Less Connection to SQL Server Database

Posted by: JohnnySteel Nov 5 2018, 10:13 PM

Sorry, the heading should read "Deliberate DSN-Less Connection Failure to SQL Server Database". I couldn't change this as there does not appear to be means to do so.

I'm getting an (expected) error message with a DSN-Less connection to a SQL database on a SQL Server that says:

"Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user '<username>'"

Now, i know why the connection failed as it was deliberate on my part to cause this error. I want to trap this error and convert it to text to say the database is not available, such as when it is shut down to do software maintenance on it, etc., rather than display the error message like the one given above.

How do i trap this error and convert it into some meaningful text on the web page to say the database is not available?

The code i am using is ASP Classic.

Thank you.

Posted by: CharlesEF Nov 6 2018, 01:49 AM

Most likely you would have to dig through the Microsoft SDK to find the list of SQL Server error codes and their meaning. You might get more information by posting on the Microsoft forum.

Posted by: JohnnySteel Nov 6 2018, 07:39 PM

Thank you. I'm not so much concerned about the error codes, etc., as i already have these defined. What I'm trying to do is to catch the failed connection event and convert the connection failure into words like "Database Unavailable" on the web page rather than showing the default error message as noted previously.

Trying to find that in MSDN is like looking for a needle in a haystack.

Posted by: CharlesEF Nov 7 2018, 01:30 AM

If I understand you correctly you could call an error handling function, with the error number as a parameter. That function could contain a switch statement that takes the parameter and returns any words you want, based on the error number (parameter).

Or are you asking for help trapping the errors? I guess I don't understand completely.

Posted by: JohnnySteel Nov 11 2018, 09:13 PM

Thank you. This is the answer I came up with, and it works:

ON ERROR RESUME NEXT
conntemp.open myDSN 'This activates the database connection, as given above this code.
IF ERR.NUMBER <>0 THEN 'There is far more than just one error code for this failure. Hence, "<> 0 ".
DBConnection="0"
ELSE
DBConnection="1"
END IF
ERR.CLEAR

Then in the web page, retrieve the value for DBConnection and evaluate it. Where DBConnection="0", this indicates a failure to connect. For connection failuire, display the text "Database Unavailable" on the web page, otherwise, continue with producing the asp web page normally.

Testing has shown it to work well. Now implementing it into the production system.

Does this all make sense?

Posted by: CharlesEF Nov 11 2018, 11:08 PM

So, this is for ASP? I didn't understand that point, glad you got it worked out.

Posted by: Christian J Nov 12 2018, 02:25 AM

QUOTE(JohnnySteel @ Nov 6 2018, 04:13 AM) *

Sorry, the heading should read "Deliberate DSN-Less Connection Failure to SQL Server Database". I couldn't change this as there does not appear to be means to do so.

A moderator can edit the heading if you still want it changed.

QUOTE(JohnnySteel @ Nov 7 2018, 01:39 AM) *

I'm not so much concerned about the error codes, etc., as i already have these defined. What I'm trying to do is to catch the failed connection event

I don't know ASP, but maybe a try/catch statement could work (depending on ASP scripting language, see also https://stackoverflow.com/questions/472558/is-try-catch-like-error-handling-possible-in-asp-classic ).

Posted by: CharlesEF Nov 12 2018, 12:49 PM

I haven't used vbscript in many years but I don't think it supports try/catch (unless it was added in recent years). In that case 'ON ERROR RESUME NEXT' is the way to go. I believe there should be a 'On Error GoTo 0' at the end, to turn on error checking again.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)