共用方式為


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";
    }
}

備註

發生錯誤時,.NET Framework Data Provider for SQL Server 建立這個類別。 的 SqlError 實例會由 SqlErrorCollection 建立及管理,接著由 SqlException 類別建立。

安全性層級 10 或以下的訊息是告知性的訊息,用以指出問題產生的原因是使用者輸入了錯誤的資訊。 從 11 到 16 的嚴重性層級是由使用者產生,而且可由使用者更正。 17 到 25 的嚴重性層級表示軟體或硬體錯誤。 當發生層級 17、18 或 19 錯誤時,您可以繼續運作,雖然您可能無法執行特定的語句。

當嚴重性層級為 19 或低於 19 時,SqlConnection 仍保持開啟。 發生 20 或以上的安全性層級時,伺服器通常會關閉 SqlConnection。 但是,使用者可以再次開啟連線,然後繼續進行。 在這兩個情況中,SqlException 皆由執行該命令的方法所產生。

如需SQL Server所產生的錯誤詳細資訊,請參閱Database Engine 錯誤的原因和解決方式。 如需嚴重性層級的詳細資訊,請參閱 Database Engine 錯誤嚴重性

屬性

Class

取得從 SQL Server 傳回的錯誤之嚴重性層級。

LineNumber

取得 Transact-SQL 命令批次內的行號或包含錯誤的預存程序。

Message

取得描述錯誤的文字。

Number

取得識別錯誤類型的值。

Procedure

取得產生錯誤之預存程序或遠端程序呼叫 (RPC) 的名稱。

Server

取得產生錯誤的 SQL Server 的執行個體名稱。

Source

取得產生錯誤之提供者的名稱。

State

某些錯誤訊息可能會在資料庫引擎程式碼中的多個點上引發。 例如,1105 錯誤可以因為許多不同情況而引發。 每個引發錯誤的特定條件會指派唯一的狀態碼。

方法

ToString()

取得錯誤訊息的完整文字。

適用於

另請參閱