Я думаю, что вы хотите посмотреть на SqlException.Number (который является номером ошибки SQL), а не SqlException.ErrorCode (который является номером ошибки драйвера SQL).
static void Main (string [] args) {
try {
var connection = new SqlConnection(@"Data Source=(localdb)\mssqllocaldb;Initial Catalog=Sandbox;Integrated Security=SSPI;");
connection.Open();
var command = new SqlCommand("throw 50000, 'oops', 1;", connection);
command.ExecuteNonQuery();
}
catch (SqlException ex) {
Console.WriteLine(ex.ErrorCode + ": " + ex.Number + ": " + ex.Message);
for (int i = 0; i < ex.Errors.Count; i++)
Console.WriteLine(ex.Errors[i].Number + ": " + ex.Errors[i].Message);
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
};
}
... yields ...
-2146232060: 50000: oops
50000: oops
Намного больше информации о SqlException на MSDN и о конкретной ошибке, которую вы получаете здесь .