2012年6月1日金曜日

(SQL Server)エラーメッセージ一覧

SQL Server エラーメッセージ一覧の取得方法です。取得には sys.messages カタログビュー(システム定義メッセージとユーザー定義メッセージ)を参照します。

language_id を指定しないと英語など、全ての言語のメッセージ一覧が取得できます。
SELECT *
FROM sys.messages

language_id を指定すると、指定した言語のメッセージ一覧が取得できます。
SELECT *
FROM sys.messages
WHERE language_id = 1041

さらに message_id を指定すると対象のメッセージ内容を取得できます。
SELECT *
FROM sys.messages
WHERE language_id = 1041
  AND message_id = 2627

.NET でアプリを開発している場合は try - catch で SqlException をキャッチして message_id に応じた例外処理も可能です。
try
{
    // 処理
}
catch (SqlException ex)
{
    if (ex.Number == 2627)
    {
        // キー重複
    }
}

■参考リンク
sys.messages (Transact-SQL) - MSDN

■環境
OS:Microsoft Windows XP Home Edition 日本語 ServicePack 3
DB:Microsoft SQL Server 2005 Express Edition Service Pack 4 (9.00.5000.00)
DB管理ツール:Microsoft SQL Server Management Studio Express (9.00.3042.00)