2017-09-11 22 views
0

SQL 스크립트를 실행하고 결과를 업데이트 로그 테이블에 삽입해야하는 데이터베이스 업데이트 메커니즘을 만들고 있습니다.SqlException.Message가 잘못된 메시지 순서를 반환합니다.

스크립트를 실행하고 업데이트 로그 테이블에 삽입 할 SQL 메시지를 동적으로 설정하기 위해 C#을 사용하고 있습니다.

스크립트에 오류가있는 경우이를 catch하고 SqlException.Message를 사용하여 메시지에 기록합니다. (테스트를 위해

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는"오류가 발생하는 수를 변경 목적의 라인 :

if (exception != null) 
{ 
    sqlMessage += exception.Message + Environment.NewLine; 
    break; 
} 

내 스크립트 (숫자와 화살표 스크립트에 실제로있다)과 같이 보이는 화살표가있는).

내가 로그를 다음 기다리고 있었다 (숫자는 스크립트의 숫자에 해당) 대신

----- 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 ----- 

정상에 다시 얻을 수있는 방법이 있나요 주문? 로그 메시지가있는 곳에서 스크립트를 디버깅하는 것은 상당히 성가시다.

감사합니다!

답변

0

Invalid object name 'Users_error'컴파일 오류입니다. 다른 두 개는 실행 메시지입니다. 일괄 컴파일은 실행 전에 발생합니다. 자세한 내용은 Understanding how SQL Server executes a query을 참조하십시오.

관련 문제