應用程式啟動時需先驗證與 SQL Server 的連線是否正常,根據檢測結果決定是否繼續執行後續業務邏輯。
執行一個簡單的查詢操作,若成功則連線正常;若拋出例外則連線失敗。關鍵在於查詢語句必須語法正確且極輕量。
public bool TestSqlConnection(string connectionString)
{
try
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
// 輕量級測試查詢:不存取實際資料表
using (var command = new SqlCommand("SELECT 1", connection))
{
command.ExecuteScalar();
}
return true;
}
}
catch (SqlException)
{
return false;
}
}
Public Function TestSqlConnection(connectionString As String) As Boolean
Try
Using connection As New SqlConnection(connectionString)
connection.Open()
Using command As New SqlCommand("SELECT 1", connection)
command.ExecuteScalar()
End Using
Return True
End Using
Catch ex As SqlException
Return False
End Try
End Function
// 在連線字串中設定較短的連線逾時
"Server=myServer;Database=myDB;User=myUser;Password=myPass;Connection Timeout=5;"
public enum ConnectionHealth { Healthy, Slow, Unreachable }
public ConnectionHealth CheckConnectionHealth(string connectionString)
{
var stopwatch = Stopwatch.StartNew();
try
{
using (var conn = new SqlConnection(connectionString))
{
conn.Open();
using (var cmd = new SqlCommand("SELECT 1", conn))
{
cmd.ExecuteScalar();
}
}
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds < 500 ? ConnectionHealth.Healthy : ConnectionHealth.Slow;
}
catch
{
return ConnectionHealth.Unreachable;
}
}
應用程式啟動時建立並關閉幾個連線,預熱連線池,減少首次真實請求的延遲。
以 SELECT 1 作為探針查詢,配合 try-catch 捕獲 SqlException,是最簡單可靠的連線可用性檢測方式。建議封裝為通用工具方法,在應用啟動、定時健康檢查、熔斷器模式等場景複用。