次のスニペットを実行すると
try
{
using (SqlConnection conn = new SqlConnection("I'm shy"))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "PRINT 'A';PRINT 'B';PRINT 'C';RAISERROR('SQL_Error', 18, 1)";
cmd.ExecuteNonQuery();
}
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
次のメッセージが表示されます。
SQL_Error
A
B
C
とex.Errors
4 つのエントリがあります (SqlError
出力に対応する 3 の aSqlError.Class
は 0 です (対、実際のエラーの場合は 18))。
ただし、に置き換えるExecuteNonQuery
とExecuteScalar
、期待される結果が得られます。
メッセージSQL_Error
はex.Errors
...
の奇妙な動作を回避する方法はありますcmd.ExecuteNonQuery
か??