我有一个C#控制台应用程序,它本质上是一个很长的批处理过程,可以在许多不同的数据库中每晚处理数据。在此类程序的开头测试基本数据库连接的正确或首选方法是什么?我遇到了一个问题,即我的一个连接有一个过期的数据库密码,这是由异常处理捕获但我想在一开始就测试基本连接。
简单的SELECT查询是否足够或是否有更有效的方法为众多数据库执行此操作?
答案 0 :(得分: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();
}
}
第二天早上你可以检查文件是否有错误......
答案 1 :(得分:0)
'Connection.open`
是确定是否可以连接到db的简单方法。
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
}
如果您收到编号为18487或18488的SqlException,则表示密码已更改。
答案 2 :(得分:0)
您不需要运行任何查询。 如果您使用SqlConnection传递连接字符串,您可以尝试Open()连接,如果无法连接,您将获得异常 类似的东西:
try
{
var cnn = new SqlConnection(connectionString);
cnn.Open();
}
catch
{
// connection failed, do something
}
答案 3 :(得分:0)
打开(然后关闭)连接应该足以测试密码。但是,如果db-user有权访问特定的表,则不会告诉您。