[英]How get SQL error message using ServerConnection SMO In C#
[英]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.