none
SQL Server 2005 연결질문 RRS feed

  • 질문

  • 안녕하세요..

    윈도우7 및 SQL Server 2005 사용중입니다.

    DB관련 프로그램은 비주얼베이직6.0입니다.

    사용중인 DB가 A.mdb라고 했을 때, 윈도우7 32비트에서는 연결이 잘 되었는데,

    64비트에서는 A.mdb에 로그인이 실패했다는 메세지만 나오고, 연결이 안 됩니다.

    이유를 알면 해결책을 생각해볼 것 같은데, 초보라 이유를 모르겠네요.

    무엇때문에 그런건지 알려주시면 고맙겠습니다.

    2016년 8월 10일 수요일 오전 5:44

모든 응답

  • 안녕하세요.

    먼저 A.mdb로 DB를 얘기하셨는데, ACCESS를 사용하시는 건 아니겠죠? ^^

    SQL Server를 사용한다는 가정하에, SQL Server 2005는 서버에 있고, VB6.0이 windows 7 클라이언트에 설치되었다고 이해하면 될까요?

    로그인이 실패에 대한 원인이 다양하기 때문에, 우선 어떤 원인인지 확인해봐야 할 것 같습니다.

    만약, SQL Server에 접속은 가능했는데, 로그인이 실패한 경우라면 SQL Server 로그에 기록이 남게 됩니다.

    아래와 같이 SQL Server 로그에서 현재 로그를 열어봅니다.

     

    아래 예제에는 test란 로그인이 로그인을 실패한 기록이 있네요.

     

    오류와 심각도 뒤에 나오는 "상태"에 주목하세요.

    상태 8은 Password mismatch 즉 암호가 틀린 경우입니다.

     

    "상태"에 대한 설명은 다음 아티클을 참고하세요.

    Understanding "login failed" (Error 18456) error messages in SQL Server 2005

     

    만약 SQL Server 로그에 로그인 실패 기록이 없다면, SQL Server에 접근조차 하지 못했다는 것이니 다른 부분을 찾아봐야 할 것 같습니다. (혹은 로그인 실패 기록을 남기지 않게 서버 설정을 변경했을 수도 있습니다.)

     

    위에 설명드린대로 로그인 실패 부분 확인해볼 것을 권고 드립니다.

     

     

    답변이 도움이 되었으면 좋겠습니다.

    Younggun Kim

    MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr
    ygkim@sqlroad.com




    • 편집됨 Younggun KimMVP 2016년 8월 11일 목요일 오전 10:06
    • 답변으로 제안됨 Boram Yi 2016년 8월 31일 수요일 오전 8:39
    2016년 8월 11일 목요일 오전 10:03
  • 답변 감사합니다.

    오류메시지는 "오류:18456, 심각도:14, 상태:16"이라고 뜨는데,

    32비트 윈도우7에선 아무 문제 없는 것이, 64비트 윈도우7에선 왜 이런 문제가 생길까요?

    어떻게 조치 해야 하는지 알려주시면 고맙겠습니다.

    2016년 8월 13일 토요일 오전 12:44
  • 음...

    해당 상태는 연결 시 데이터베이스에 접근할 수 없을 경우 발생하는 오류상태입니다.

    일단 서버에 접속은 된것으로 보입니다.

    당연히 같은 connection string을 사용하고 있는거겠죠?

     

    접속시 사용한 login의 default database가 접속이 불가능한 경우에 발생할 수 있습니다.

    - OS에서 ODBC로 연결한 경우라면 기본 데이터베이스 설정이 잘 되어 있는지 확인해보세요.

    - connectionstring에 데이터베이스가 정상적으로 지정되어 있는지 확인해보세요.

    - 아니면 사용하려는 login의 default 데이터베이스를 수정해보세요.

    ALTER LOGIN [로그인이름] WITH DEFAULT_DATABASE = [데이터베이스이름];

     

    혹시 연결하려는 데이터베이스에 auto_close가 설정된 경우도 이런 문제가 생길 수 있습니다.

    다음 쿼리로 확인해보세요.

    SELECT name, is_auto_close_on FROM sys.databases WHERE name = '데이터베이스';

    만약 is_auto_close_on이 1이라면 다음 문장으로 0으로 변경해보세요.

    ALTER DATABASE TestDB SET auto_close OFF
     
    답변이 도움이 되었으면 좋겠습니다.

    Younggun Kim

    MCDBA, MCITP
    Consultant @ Database Division in SQLRoad
    http://www.sqlroad.com  http://www.sqlserver.co.kr
    ygkim@sqlroad.com
    • 답변으로 제안됨 Boram Yi 2016년 8월 31일 수요일 오전 8:39
    2016년 8월 14일 일요일 오전 3:16