2012-08-06 2 views
0

여러 사용자로 구성된 고객 제공 데이터베이스가 있습니다. 각 사용자는 SQL Server에 대한 데이터베이스 로그인 인 고유 한 사용자 이름/암호 등을 가지고 있습니다.프로그래밍 방식으로 연결 문자열 사용자 이름/암호를 확인 하시겠습니까?

레거시 소프트웨어에서 사용자는 코드에서 연결 문자열을 형성하는 데 사용되는 데이터베이스와 암호를 묻습니다.

많은 데이터베이스 코드를 교체해야하므로 데이터베이스에 대한 사용자 이름과 암호를 확인하는 방법이 필요합니다. 현재, Linq를 사용하여 암호가 틀리면 결국 System.Data.SqlClient.SqlException이됩니다.하지만이 시간이 꽤 걸립니다. (시간 초과라고 생각하십니까?).

누구든지 데이터베이스에 대해 내 username/password 콤보를 신속하게 테스트 할 수있는 좋은 방법을 알고 있습니까?

+0

이 질문을 볼 수 있습니다. http://stackoverflow.com/questions/154485/how-to-test-sqlserver-connection-without-opening-a-database. 암호가 정확하지 않은 경우 빠른 응답을 반환 할 지 확실하지 않습니다. –

답변

0

당신은 감소 된 시간 제한

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

18456으로, ADO를 통해 연결을 여는 시도 할 수 있었다 것은 기본 연결 제한 시간은 15 초입니다 SQL 잘못된 로그인

입니다.

+0

DB 서버가 많은 연결로 분주하고이 요청을 처리하기 위해 얼마 동안 기다려야하는 경우 어떻게해야합니까?이 경우 사용자와 암호가 정확하더라도 사용자에게 잘못된 로그인이 표시됩니다. – AnandPhadke

+0

그러면 실패합니다. 그래서 기본값은 15 초입니다. 이 제한 시간을 늘리거나 연결 예외로부터 정확한 응답을 확인할 수 있습니다. – podiluska

+0

제 경우에는 DB 서버가 결코 바쁜 일이 아니므로 정직한 해결 방법으로 작동 할 수도 있습니다. 나는 이것을 시험 빌드에 넣고이 AM을 구축하고 그것이 일을하는지 보게 될 것이다. – KingCronus

-1

필자가 전달한 자격 증명이 올바르지 않다고 말할 수 있도록 데이터베이스를 원하지 않는다고 주장합니다. 왜? 왜냐하면 무차별 체력 검사가 가능하기 때문입니다. 그러한 시도를 저지하는 데는 작은 지연을 도입하는 것이 먼 길을 간다.

관련 문제