0

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

在旧版软件中,会要求用户提供他们的数据库和密码,然后使用这些密码在代码中形成连接字符串。

我的任务是为此替换大量数据库代码,并且我需要一种快速检查数据库的用户名和密码的方法。目前,使用 Linq,如果密码不正确,我最终会得到一个System.Data.SqlClient.SqlException,但这需要很长时间才能真正抛出(我假设超时?)。

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

4

2 回答 2

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 秒。

于 2012-08-06T08:36:00.227 回答
-1

我认为您不希望数据库(或任何东西,真的)能够告诉您您传入的凭据不正确。为什么?因为这允许蛮力检查。即使引入一个小的延迟也可以在很大程度上阻止这种尝试。

于 2012-08-06T14:48:02.520 回答