Share via


SqlError クラス

定義

SQL Server から返された警告またはエラーに関する情報を収集します。

public ref class SqlError sealed
[System.Serializable]
public sealed class SqlError
public sealed class SqlError
[<System.Serializable>]
type SqlError = class
type SqlError = class
Public NotInheritable Class SqlError
継承
SqlError
属性

次の例では、コレクション内の各 をSqlErrorSqlErrorCollection表示します。

using Microsoft.Data.SqlClient;
using System.Text;

class Program
{
    static void Main()
    {
        string s = GetConnectionString();
        ShowSqlException(s);
        Console.ReadLine();
    }
    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();
    }

    static private string GetConnectionString()
    {
        // To avoid storing the connection string in your code, 
        // you can retrieve it from a configuration file.
        return "Data Source=(local);Initial Catalog=AdventureWorks;"
            + "Integrated Security=SSPI";
    }
}

注釈

このクラスは、エラーが発生したときにSQL Server.NET Framework データ プロバイダーによって作成されます。 の SqlError インスタンスは によって SqlErrorCollection作成および管理され、 クラスによって SqlException 作成されます。

重大度レベルが 10 以下のメッセージは情報メッセージで、ユーザーの入力ミスによってエラーが発生した場合に表示されます。 11 から 16 までの重大度レベルはユーザーによって生成され、ユーザーが修正できます。 重大度レベルが 17 ~ 25 のエラーは、ソフトウェアまたはハードウェアのエラーです。 レベル 17、18、または 19 のエラーが発生した場合は、特定のステートメントを実行できない可能性がありますが、作業を続行できます。

重大度レベルが 19 以下の場合、SqlConnection は開いたままです。 重大度レベルが 20 以上のときは、通常、サーバーは SqlConnection を閉じます。 ただし、ユーザーは接続を再び開き、続行できます。 どちらの場合も、コマンドを実行しているメソッドによって SqlException が生成されます。

SQL Serverによって生成されるエラーの詳細については、「データベース エンジン エラーの原因と解決策」を参照してください。 重大度レベルの詳細については、「 データベース エンジン エラーの重大度」を参照してください。

プロパティ

Class

SQL Server から返されたエラーの重大度レベルを取得します。

LineNumber

Transact-SQL コマンドのバッチまたはストアド プロシージャ内の、エラーが含まれる行の番号を示します。

Message

エラーを説明するテキストを取得します。

Number

エラーの種類を示す番号を取得します。

Procedure

エラーを生成したストアド プロシージャまたはリモート プロシージャ コール (RPC) の名前を取得します。

Server

エラーを生成した SQL Server インスタンスの名前を取得します。

Source

エラーを生成したプロバイダーの名前を取得します。

State

エラー メッセージが データベース エンジンのコード内の複数の場所で生成される場合があります。 たとえば、複数の異なる条件に対して 1105 エラーが生成されることがあります。 エラーを生成する特定の条件はそれぞれ一意の状態コードを割り当てます。

メソッド

ToString()

エラー メッセージの完全なテキストを取得します。

適用対象

こちらもご覧ください