簡體   English   中英

在C#中使用SMO從ExecuteNonQuery語句獲取錯誤消息

[英]Get error message from ExecuteNonQuery statement with SMO in C#

我正在嘗試執行腳本並捕獲錯誤(如果有)並將輸出寫到某處。

我有這個:

...
    SqlConnection connection = new SqlConnection(connString);
    Server server = new Server(new ServerConnection(connection));
    server.ConnectionContext.ExecuteNonQuery(script);
...

當SQL中有問題時,我將無法獲取查詢的實際問題。

我努力了

a。)捕獲ExecutionFailureException並進行處理-錯誤本身沒有與SQL問題有關的信息,並且

b。)我嘗試循環遍歷server.ReadErrorLog(),但這似乎與服務器連接的錯誤日志有關,與其說是與正在執行的SQL上下文有關,不如說是

b。)我試圖在ConnectionContext上添加一個InfoHandler事件處理程序,但它似乎從未觸發過。

如何獲得詳細的錯誤消息? (即,如果可能的話,我將看到是否要在Management Studio中運行SQL的錯誤是完美的)

我只是想通了,而不是看ex.Message,它返回了一個模糊的

執行Transact-SQL語句或批處理時發生異常。

我只需要引用ExecutionFailureException的ex.GetBaseException()。Message即可收到更多有意義的信息:

無效的對象名稱“ FakeTable”(或任何錯誤)

碼:

...
try
{
    SqlConnection connection = new SqlConnection(connString);
    Server server = new Server(new ServerConnection(connection));
    server.ConnectionContext.ExecuteNonQuery(script);
} catch (ExecutionFailureException ex) {
    MessageBox.Show("Error: " + ex.GetBaseException().Message); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM