0

我有一个 C# 控制台应用程序,它本质上是一个长批处理过程,每晚处理许多不同数据库中的数据。在此类程序开始时测试基本数据库连接的正确或首选方法是什么?我遇到了我的一个连接的数据库密码过期的问题,该连接被异常处理捕获,但我想在一开始就测试基本连接。

一个简单的 SELECT 查询就足够了,还是有一种更有效的方法可以为众多数据库执行此操作?

4

4 回答 4

3

恕我直言,最简单的方法是尝试连接到数据库,如果失败,就放弃。
当您运行夜间批处理时,立即了解原因并解决它并不重要。
所以像这样

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();
    } 
}

第二天早上你可以检查文件是否有错误...

于 2012-04-13T12:47:56.077 回答
0
'Connection.open` 

是确定是否可以连接到 db 的简单方法。

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
}

如果您收到编号为 18487 或 18488 的 SqlException,则表明密码已更改。

Connection.changePassword

于 2012-04-13T12:52:31.657 回答
0

您无需运行任何查询。如果您使用 SqlConnection 传递连接字符串,则可以尝试 Open() 连接,如果无法连接,则会出现异常,例如:

try
{
    var cnn = new SqlConnection(connectionString);
    cnn.Open();
}
catch
{
   // connection failed, do something
}
于 2012-04-13T12:52:50.100 回答
0

打开(然后关闭)连接应该足以测试密码。但是,这并不能告诉您 db 用户是否有权访问特定表。

于 2012-04-13T12:53:57.740 回答