私はSQLスクリプトを実行し、その結果を更新ログテーブルに挿入するデータベース更新メカニズムを作成しています。SqlException.Messageが間違ったメッセージの順序を返します
私はスクリプトを実行し、更新ログテーブルに挿入されると思われるSQLメッセージを動的に設定するためにC#を使用しています。
スクリプトにエラーがある場合、私はそれをキャッチし、SqlException.Messageを使用してメッセージに書き込みます。
if (exception != null)
{
sqlMessage += exception.Message + Environment.NewLine;
break;
}
私のスクリプトはそうのように見えます(数字と矢印がスクリプトの中で、実際にはありません):テスト用
1. USE [Database]
IF (EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'Users'))
BEGIN
print('Table exists - proceeding to insert');
END
ELSE
BEGIN
-- CREATING TABLE
CREATE TABLE [dbo].[Users](
[UserId] [int] NOT NULL,
[UserFullName] [nvarchar](100) NOT NULL,
[UserName] [nvarchar](100) NOT NULL,
[UserShortName] [nvarchar](50) NOT NULL,
[UserLogin] [varchar](50) NOT NULL
)
2. print 'Created table'
END
3.-> IF(EXISTS(SELECT * FROM [Users_error] WHERE UserId = 1))
BEGIN
print('User exists - nothing to insert');
END
ELSE
BEGIN
-- INSERTING USER
INSERT INTO [dbo].[Users]
([UserId]
,[UserFullName]
,[UserName]
,[UserShortName]
,[UserLogin])
VALUES
(1,'System Administrator','Admin','SA', 'SA')
print 'Inserted user'
END
は、私はエラーをスローする「Users_error」に「ユーザー」に変更目的と(ライン矢印付き)。
私はログを、以下の期待していた(数字はスクリプトの番号に対応):代わりに
----- STARTED 2.sql -----
1. Changed database context to 'Database'.
2. Created table
3. Invalid object name 'Users_error'.
----- FINISHED 2.sql -----
、私はログ次しまっ:
----- STARTED 2.sql -----
3. Invalid object name 'Users_error'.
1. Changed database context to 'Database'.
2. Created table
----- FINISHED 2.sql -----
正常に戻ってそれを取得する方法はあります注文?その場所のログメッセージを使ってスクリプトをデバッグするのは非常に面倒です。
ありがとうございます!