以编程方式检查连接字符串用户名/密码?

时间:2012-08-06 08:30:29

标签: c# sql-server linq-to-sql

我有一个客户提供的数据库,配置了多个用户。每个用户都有自己的用户名/密码等,这些是SQL Server的数据库登录。

在旧版软件中,系统会要求用户输入数据库和密码,然后使用这些数据库和密码在代码中形成连接字符串。

我的任务是更换大量的数据库代码,我需要一种方法来快速检查数据库的用户名和密码。目前,使用Linq,如果密码不正确,我最终得到一个System.Data.SqlClient.SqlException,但实际抛出需要一段时间(我假设超时?)。

有人知道我可以快速测试我的用户名/密码组合对数据库吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试通过ADO打开连接,并减少超时

 SqlConnection conn = new SqlConnection (yourconnectionstring + ";Connection Timeout=1;");          
 try
 { 
     conn.Open();
     conn.Close();
 }
 catch (SqlException ex)
 {
     if (ex.Number == 18456)
     {
          // invalid login
     }
 }

18456是SQL无效登录

默认连接超时为15秒。

答案 1 :(得分:-1)

我认为你不希望数据库(或其他任何东西)能够告诉你,你传入的凭据是不正确的。为什么?因为这允许强力检查。即使引入一小段延迟也会阻碍这种尝试。