2017-03-10 5 views
-1

어딘가에 표시 할 수 있도록 Dapper를 통해 메시지 탭 출력을 C# 코드로 전파하는 방법을 아는 사람이 있습니까?SQL 메시지 전파 방법 Dapper를 통한 탭 출력

현재 행 수 및 예외에 대한 영향을받는 방법을 알고 있지만 다른 방법은 많지 않습니다.

public static void ExecuteSqlCommand(string connectionString, string sql) 
{ 
    using (var db = new SqlConnection(connectionString)) 
    { 
     var count = db.Execute(sql, null, null, 240); 
     Console.WriteLine(count); //can get count of rows affected but not rest of output from Messages Tab in SSMS. 
    } 
} 

SQL Server 프로파일 러를 실행하여 메시지가 표시되는지 확인했지만 아무 것도 보지 못했습니다. SQL Server Management Studio에서 SQL 스크립트를 실행하면 메시지가 생성된다는 것을 알지만 어디에도 가지 않는 것 같습니다.

db.InfoMessage를 조사했지만 작동하지 않았으며 시간이 조금 흐려져 가고 있습니다.

예를 들어 수정해야하는 create table 스크립트를 실행할 때 "경고! 최대 키 길이는 900 바이트입니다. 색인 'UQ_UniqueMachineInfo'의 최대 길이는 2428 바이트입니다. 삽입/업데이트 작업이 실패합니다. " 코드를 통해 보여줄 필요가 있습니다.

+0

이제는 대화 상대가 SQL 메시지 표시와 관련이 없음을 보여주기 위해 질문과 제목을 조정해야하는지 궁금합니다. –

답변

3

연결의 InfoMessage 이벤트에 이벤트 처리기를 연결하지 않습니다.

public static void ExecuteSqlCommand(string connectionString, string sql) 
{ 
    using (var db = new SqlConnection(connectionString)) 
    { 
     db.InfoMessage += new SqlInfoMessageEventHandler(db_InfoMessage); 
     var count = db.Execute(sql, null, null, 240); 
     Console.WriteLine(count); //can get count of rows affected but not rest of output from Messages Tab in SSMS. 
    } 
} 

void db_InfoMessage(object sender, SqlInfoMessageEventArgs e) 
{ 
    // handle here and look at e.Message 
} 
+0

고맙습니다. 실제로 비슷한 코드를 보여 주려고했지만 실제로 뭔가를 엉망으로 만들었을 것입니다. –