Recopila información relevante para una advertencia o un error devuelto por SQL Server.
Espacio de nombres: System.Data.SqlClient
Ensamblado: System.Data (en system.data.dll)
Visual Basic (Declaración)
<SerializableAttribute> _
Public NotInheritable Class SqlError
[SerializableAttribute]
public sealed class SqlError
[SerializableAttribute]
public ref class SqlError sealed
/** @attribute SerializableAttribute() */
public final class SqlError
SerializableAttribute
public final class SqlError
Esta clase se crea mediante el proveedor de datos de .NET Framework para SQL Server cuando se produce un error. Se crea una instancia de SqlError y se administra mediante SqlErrorCollection, que a su vez se crea mediante la clase SqlException.
Los mensajes con un nivel de gravedad igual o menor que 10 son mensajes informativos e indican los problemas producidos cuando un usuario no escribe la información correctamente. Los niveles de gravedad del 11 al 16 son errores generados por el usuario y que él mismo puede corregir. Los niveles de gravedad del 17 al 25 indican errores de software o hardware. Cuando se produce un error de niveles 17, 18 o 19, se puede continuar trabajando, aunque es posible que no se pueda ejecutar una determinada instrucción.
SqlConnection permanece abierto cuando el nivel de gravedad es igual o menor que 19. Si el nivel de severidad es igual o mayor que 20, normalmente, el servidor cierra la SqlConnection. Sin embargo, el usuario puede volver a abrir la conexión y continuar. En ambos casos, el método que ejecuta el comando genera una SqlException.
En el siguiente ejemplo se muestra cada SqlError dentro de la colección SqlErrorCollection.
Public Sub ShowSqlException(ByVal connectionString As String)
Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
Try
command.Connection.Open()
command.ExecuteNonQuery()
Catch ex As SqlException
DisplaySqlErrors(ex)
End Try
End Using
End Sub
Private Sub DisplaySqlErrors(ByVal exception As SqlException)
Dim i As Integer
For i = 0 To exception.Errors.Count - 1
Console.WriteLine("Index #" & i & ControlChars.NewLine & _
"Error: " & exception.Errors(i).ToString() & ControlChars.NewLine)
Next i
Console.ReadLine()
End Sub
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();
}
System.Object
System.Data.SqlClient.SqlError
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
.NET Framework
Compatible con: 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0, 1.0