Skip to content
This repository has been archived by the owner on Jun 18, 2020. It is now read-only.

Error codes and diags not returned on error, w/ workaround #45

Closed
uiteoi opened this issue Jul 27, 2012 · 6 comments
Closed

Error codes and diags not returned on error, w/ workaround #45

uiteoi opened this issue Jul 27, 2012 · 6 comments
Milestone

Comments

@uiteoi
Copy link

uiteoi commented Jul 27, 2012

On error, the error parameter in callbacks does not contain any useful information for debugging queries.

I currently work around this issue using TRY blocks:

BEGIN TRY
  <original statement>
END TRY BEGIN CATCH
  SELECT ERROR_NUMBER() AS '__error', ERROR_MESSAGE() AS 'message', ERROR_SEVERITY() AS 'severity', ERROR_STATE() AS 'state'
END CATCH
@wread
Copy link
Contributor

wread commented Jul 27, 2012

Did you try getting error information via callbacks? Here's one example:

    Connection.queryRaw(tsql, function (e, r) {
        if (e) {
            console.log("\nquery FAILED with this error message:\n" + e.toString()));
            return;
        }

@uiteoi
Copy link
Author

uiteoi commented Jul 27, 2012

Before implementing this workaround I have tried many things including JSON.stringify( e ), and using the "develop" branch to see of this was fixed but nothing worked so I had to implement this workaround which works great until you come with a fix.

My workaround also requires to test the results that are then otherwise always valid for the first column name to match '__error'.

@jguerin
Copy link
Contributor

jguerin commented Jul 28, 2012

We will be expanding the error generation in a future release, so that you see the entire error stack from the underlying ODBC driver. Thanks for the feedback!

@jkint
Copy link
Contributor

jkint commented Jul 31, 2012

In addition, each error should contain the individual elements in an object, similar to how your query above does it. There should be 3 elements: SQLSTATE, message, and native error code.

@uiteoi
Copy link
Author

uiteoi commented Jul 31, 2012

When a stored procedure is called there are a few additional information that would be useful, check this article for more info: http://msdn.microsoft.com/en-us/library/ms179495(v=sql.105).aspx

I don't know if these are available at the ODBC level but in any case these can be caught at the SQL level in a try..catch block.

Because this driver seems to be designed specifically for SQL Server, I think it would be fair to assume that some of these useful information be available as a convenience provided by the higher-level driver compared to a pure ODBC-level driver.

@jguerin
Copy link
Contributor

jguerin commented Aug 1, 2012

Thanks for the feedback, we'll evaluate it when we start work on this feature :)

@ghost ghost assigned jguerin Aug 23, 2012
@jkint jkint closed this as completed in a1a89a7 Sep 26, 2012
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants