我有一個C#控制檯應用程序,實質上是一個長時間的批處理過程,每晚在許多不同的數據庫上處理數據。在此類程序開始時測試基本數據庫連接的正確或首選方式是什麼?我遇到了一個由異常處理捕獲的連接中有一個過期數據庫密碼的問題,但我想在開始時測試基本連接。在C#控制檯應用程序中測試數據庫連接
一個簡單的SELECT查詢是否足夠或者是否有更有效的方法來處理大量數據庫?
我有一個C#控制檯應用程序,實質上是一個長時間的批處理過程,每晚在許多不同的數據庫上處理數據。在此類程序開始時測試基本數據庫連接的正確或首選方式是什麼?我遇到了一個由異常處理捕獲的連接中有一個過期數據庫密碼的問題,但我想在開始時測試基本連接。在C#控制檯應用程序中測試數據庫連接
一個簡單的SELECT查詢是否足夠或者是否有更有效的方法來處理大量數據庫?
恕我直言,最簡單的方法是嘗試連接到數據庫,如果你有失敗,你放棄。
由於您正在運行夜間批次,因此立即理解並解決問題並不重要。
因此,像這樣
using(SqlConnection conn = new SqlConnection(connectionString))
{
try
{
conn.Open();
// Do what you please here
}
catch (Exception ex)
{
// Write error to file
File.Append(...,
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + " " +
ex.Message);
}
finally
{
conn.Close();
}
}
第二天早上,你可以檢查是否存在錯誤的文件...
'Connection.open`
是簡單的方法來確定是否可以連接到數據庫或沒有。
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
}
如果您得到一個帶有數字18487或18488的SqlException,則表示密碼已更改。
您不需要運行任何查詢。 如果使用的SqlConnection傳遞連接字符串,你可以嘗試打開()的連接,如果您無法連接 喜歡的東西,你會得到一個異常:
try
{
var cnn = new SqlConnection(connectionString);
cnn.Open();
}
catch
{
// connection failed, do something
}
開幕(然後關閉)的連接應該足以測試密碼。但是,這並不告訴你,如果一個db用戶有權訪問特定的表。
@ OlivierJacot-Descombes:我不明白......我的回答有什麼問題? – Marco 2012-04-13 12:59:07
答案對我來說很好。注意:當你使用'using'語句時,你需要使用'conn.Close()'嗎? – 2012-04-13 13:05:33
@ShawnH:我不確定,我應該測試它。我在回答問題時很想知道,但是因爲我不確定......好吧,最好確定它已關閉! :) – Marco 2012-04-13 13:12:45