Почему бы вам не обернуть SQL, который выбрасывает исключение, в блок Try / Catch, чтобы получить больше информации об этом
BEGIN TRY
SELECT *
FROM sys.messages
WHERE message_id = 21;
END TRY
GO
-- The previous GO breaks the script into two batches,
-- generating syntax errors. The script runs if this GO
-- is removed.
BEGIN CATCH
SELECT ERROR_NUMBER() AS ErrorNumber;
END CATCH;
GO
ниже приведены все сведения об ошибках, которые вы можете проверить
ERROR_NUMBER() returns the error number.
ERROR_MESSAGE() returns the complete text of the error message. The text includes the values supplied for any substitutable parameters such as lengths, object names, or times.
ERROR_SEVERITY() returns the error severity.
ERROR_STATE() returns the error state number.
ERROR_LINE() returns the line number inside the routine that caused the error.
ERROR_PROCEDURE() returns the name of the stored procedure or trigger where the error occurred.
http://msdn.microsoft.com/en-us/library/ms179296.aspx
если этого недостаточно, вы даже можете написать запрос, чтобы выбрать все записи, в которых определенное поле не может быть преобразовано в число (в вашем случае есть NVarChar, который не конвертируется)
В следующем примере ISNUMERIC используется для возврата всех почтовых индексов, которые не являются числовыми значениями.
SELECT City, PostalCode
FROM Person.Address
WHERE ISNUMERIC(PostalCode)<> 1
http://msdn.microsoft.com/en-us/library/ms186272.aspx