1 out of 4 rated this helpful - Rate this topic

SqlError Class

Collects information relevant to a warning or error returned by SQL Server.

System.Object
  System.Data.SqlClient.SqlError

Namespace:  System.Data.SqlClient
Assembly:  System.Data (in System.Data.dll)
[SerializableAttribute]
public sealed class SqlError

The SqlError type exposes the following members.

  Name Description
Public property Class Gets the severity level of the error returned from SQL Server.
Public property LineNumber Gets the line number within the Transact-SQL command batch or stored procedure that contains the error.
Public property Message Gets the text describing the error.
Public property Number Gets a number that identifies the type of error.
Public property Procedure Gets the name of the stored procedure or remote procedure call (RPC) that generated the error.
Public property Server Gets the name of the instance of SQL Server that generated the error.
Public property Source Gets the name of the provider that generated the error.
Public property State Gets a numeric error code from SQL Server that represents an error, warning or "no data found" message.
Top
  Name Description
Public method Equals(Object) Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method ToString Gets the complete text of the error message. (Overrides Object.ToString().)
Top

This class is created by the .NET Framework Data Provider for SQL Server when an error occurs. An instance of SqlError is created and managed by the SqlErrorCollection, which in turn is created by the SqlException class.

Messages with a severity level of 10 or less are informational and indicate problems caused by mistakes in information that a user has entered. Severity levels from 11 through 16 are generated by the user, and can be corrected by the user. Severity levels from 17 through 25 indicate software or hardware errors. When a level 17, 18, or 19 error occurs, you can continue working, although you might not be able to execute a particular statement.

The SqlConnection remains open when the severity level is 19 or less. When the severity level is 20 or greater, the server usually closes the SqlConnection. However, the user can reopen the connection and continue. In both cases, a SqlException is generated by the method executing the command.

For more information on errors generated by SQL Server, see SQL Server Books Online.

The following example displays each SqlError within the SqlErrorCollection collection.


public static void ShowSqlException(string connectionString)
{
    string queryString = "EXECUTE NonExistantStoredProcedure";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        try
        {
            command.Connection.Open();
            command.ExecuteNonQuery();
        }
        catch (SqlException ex)
        {
            DisplaySqlErrors(ex);
        }
    }
}

private static void DisplaySqlErrors(SqlException exception)
{
    for (int i = 0; i < exception.Errors.Count; i++)
    {
        Console.WriteLine("Index #" + i + "\n" +
            "Error: " + exception.Errors[i].ToString() + "\n");
    }
    Console.ReadLine();
}


.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ