

# Amazon RDS for SQL Server のカスタムエラーメッセージの作成
<a name="Appendix.SQLServer.CommonDBATasks.CustomMessage"></a>

アプリケーションは多くの場合、`RAISERROR` を使用してエラーを発生させることができるよう、`sys.messages` に独自のエラーメッセージを定義します。Amazon RDS DB インスタンスで、カスタムメッセージを `sys.messages` に追加するには、`rds_create_custom_message` ストアドプロシージャを使用します。このプロシージャはパラメータを `sp_addmessage` に渡します。

`rds_create_custom_message` プロシージャには以下のパラメータがあります。



| パラメータ名 | データ型 | デフォルト | 必須 | 説明 | 
| --- | --- | --- | --- | --- | 
| `@msgnum` | int | NULL | 必須 | メッセージの ID。50001～2147483647 の範囲の値にする必要があります。 | 
| `@severity` | smallint | NULL | 必須 | メッセージの重要度レベル。1～25 の範囲の値にする必要があります。 | 
| `@msgtext` | nvarchar(255) | NULL | 必須 | メッセージのテキスト。値を空にすることはできません。 | 
| `@lang` | SYSNAME | NULL | オプション | メッセージの言語。デフォルトは、セッションのデフォルト言語です。 | 
| `@with_log` | varchar(5) | NULL | オプション | メッセージが生成されたときに Windows アプリケーションログにメッセージを書き込むかどうかを指定します。 | 
| `@replace` | varchar(7) | NULL | オプション | `REPLACE` を指定して、同じ ID と言語を持つ既存のメッセージを上書きします。 | 

これらのパラメータは、`sp_addmessage` のパラメータと同じ意味を持ちます。詳細については、Microsoft Learn ウェブサイトの「[sp\_addmessage](https://learn.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addmessage-transact-sql)」を参照してください。

次の例では、`sys.messages` にメッセージを追加し、生成時に Windows アプリケーションログに記録するようにします。この例では、`@msgnum` の値 {{50002}}、`@severity` の値 {{16}}、および `@msgtext` の値を、それぞれ独自のメッセージ ID、重要度、テキストに置き換えます。

```
EXEC msdb.dbo.rds_create_custom_message
    @msgnum = {{50002}},
    @severity = {{16}},
    @msgtext = N'{{The order could not be processed.}}',
    @lang = 'us_english',
    @with_log = 'TRUE';
```

次の例では、既存のメッセージのテキストを置き換えます。この例では、`@msgnum` の値 {{50002}}、`@severity` の値 {{16}}、および `@msgtext` の値を、それぞれ独自のメッセージ ID、重要度、テキストに置き換えます。

```
EXEC msdb.dbo.rds_create_custom_message
    @msgnum = {{50002}},
    @severity = {{16}},
    @msgtext = N'{{The order could not be processed. Contact support.}}',
    @lang = 'us_english',
    @with_log = 'TRUE',
    @replace = 'REPLACE';
```

メッセージが追加されたことを確認するには、`sys.messages` をクエリします。この例では、`message_id` の値 {{50002}} を、独自のメッセージ ID に置き換えます。

```
SELECT * FROM sys.messages WHERE message_id = {{50002}};
```