2010-12-04 3 views
1

오류SQL 서버 2008 서버 측 "잘못된 사용자 ID"(오류 18456, 심각도 : 14, 상태 : 5)

데이터베이스 관리자가보고하는 마이크로 소프트 SQL 서버 2008 서버 측 오류 "잘못된 로그인"(오류 18456, 심각도 : 14, 상태 : 5). 서버 로그에서

오류 예 :

Dec 1 2010 10:12AM - Login failed for user '{Active Directory Name #1}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #1}] 
Dec 1 2010 10:44AM - Login failed for user '{Active Directory Name #2}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #2}] 
Dec 1 2010 2:03PM - Login failed for user '{Active Directory Name #3}'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #3}] 
Dec 1 2010 4:18PM - Login failed for user 'Admin'. Reason: Could not find a login matching the name provided. [CLIENT: {IP Address #1}] 

은 {의 Active Directory 이름} 도메인 않고, 자신의 로그인 이름과 동일합니다. 예를 들어, 전체 이름은 {domain} \ {Active Directory Name}입니다.

"Admin"사용자의 오류는 VBA (Microsoft Access VBA) 코드를 개발하는 사용자 인 {Active Directory Name # 1}과 동일한 IP 주소에서 비롯됩니다. 필자는 ODBC DSN 링크를 통해 데이터에 단독으로 액세스하더라도 적절한 Windows 인증 연결 문자열을 사용하여 VBA를 최소한으로 사용하도록 구성 할 필요가 있다고 생각합니다.

환경

마이크로 소프트 액세스 2003 (프론트 엔드) 데이터베이스를 읽기 전용 마이크로 소프트 SQL 서버 2008 (백엔드) 데이터베이스의 테이블에 ODBC 파일 DSN 링크를 포함.

프런트 엔드 데이터베이스에 대한 관리자 권한이 있습니다. 외부 데이터 센터의 호스팅 된 서버에있는 백엔드 데이터베이스에 대한 읽기 전용 보안 권한이 있습니다. DBA는 Windows 인증을 위해 백엔드 데이터베이스를 구성했습니다.

최종 사용자는 Active Directory 계정으로 PC에 로그인하고 프론트 엔드 데이터베이스를 연 다음 Microsoft Access Query Designer를 사용하여 백엔드 데이터베이스에 대한 테이블 링크를 사용하여 보고서를 생성합니다. 프론트 엔드 데이터베이스는 Microsoft Access Jet Security를 ​​사용하지 않습니다. 내 지식 - 로그인 프롬프트가 없습니다.

프론트 엔드 데이터베이스는 (보이는) 오류를보고하고 예상되는 결과를 생성합니다.

ODBC 파일 DSN 내용

[ODBC] 
DRIVER=SQL Server 
Trusted_Connection=Yes 
StatsLogFile={path} 
StatsLog_On=Yes 
DATABASE={dbname} 
APP=Microsoft Data Access Components 
Description={general description} 
SERVER={server name} 

왜 파일 DSN 링크가 오류없이 작동하지만 서버 측 잘못된 로그인 오류를 생성 할? 고맙습니다.

+0

추가 참고 사항 : 테이블 링크는 개발, 테스트 및 최종 사용자 사용 중에 클라이언트 측 오류없이 작동합니다. 사용자 1, 2 및 3은 백엔드 데이터베이스에서 사용자로 생성되고 db_datareader 역할을 부여받은 Active Directory 그룹의 구성원입니다. 동일한 Active Directory 그룹이 서버 자체에 대한 로그인으로 만들어지고 db_datareader 및 public 역할이 부여됩니다. 로그인은 백엔드 데이터베이스의 사용자에게 올바르게 매핑됩니다. – iokevins

+0

참고 : 2005 년 대신 2008 년 반영하도록 변경되었습니다. 우리의 프로덕션 인스턴스는 2005 년이지만 개발 환경은 2008입니다. – iokevins

답변

0

문제의 원인은 ODBC 연결 문자열의 Microsoft Access 255 문자 제한 인 문서화되지 않은 것 (?) 일 것 같습니다.

각 Microsoft Access ODBC 연결 테이블은 "Trusted_Connection = Yes"행을 포함하는 DSN 파일로 만들어졌습니다.

아마도 Windows 인증을 사용하도록 Microsoft Access에 지시합니다.

그러나 ODBC 연결 테이블 중 하나를 두 번 확인하는 동안 "Trusted_Connection = Yes"텍스트가 텍스트의 처음 255 문자 외부에있는 것으로 나타났습니다. 나는 ("{테이블}").

하지만,이 경우에만 인쇄 (271 개) 문자가 아닌 전체 문자열 연결이 명령을

인쇄 CurrentDb.TableDefs을 VBA 직접 실행 창을 사용하여 실행하여이 볼 수 있습니다. 마지막 10 자, 그러나, 다음과 같습니다

Trusted_Co 다시 연결하는 최초의 255 자에 Trusted_Connection = 예 라인을 포함하는 DSN 파일로 테이블이 문제를 해결

.

감사합니다.

1

최종 사용자가 캐시 된 데이터를 볼 가능성이 있습니까? SQL Server가 원격 연결을 허용하도록 설정되어 있습니까? AD 계정이 적절한 데이터베이스의 자격이있는 사용자와 로그인으로 설정되어 있습니까? ODBC 관리자를 통해 ODBC 연결을 테스트 할 때 성공적인 연결을 얻을 수 있습니까? 성공적인 연결 테스트가 오류를 생성합니까? 백 엔드 데이터베이스와 프런트 엔드 응용 프로그램이 같은 도메인에 있습니까? 그렇지 않으면 도메인 신뢰 설정이 있습니까? (그렇지 않은 경우 SQL 로그인 대신 AD를 사용해야 할 수도 있습니다.)

이러한 유형의 문제는 이러한 유형의 문제를 해결하기 위해 일반적으로 수행해야 할 모든 유형의 문제입니다.

+0

ODBC 관리자를 통한 ODBC 연결은 성공적인 연결을보고합니다. 성공적인 연결 테스트에서 오류가 생성되면 알 수 없음. 좋은 통찰력. 백엔드 및 프론트 엔드 데이터베이스가 동일한 도메인에 있습니다. 캐싱 및 원격 연결 문제가 (내게는) 어려울 것 같지만이를 가능한 한 염두에 두겠습니다. AD 계정은 자격이있는 사용자뿐만 아니라 적절한 데이터베이스에 로그인으로 설정됩니다. 이것은 또 다른 우수한 가능성 인 것처럼 보이며 강력한 가능성으로 기대고 있습니다. 감사합니다. – iokevins

+0

위의 데이터베이스의 로그인/사용자에 대한 AD 설정에 대한 몇 가지 추가 설명을 포함 시켰습니다. – iokevins

+0

Access 데이터베이스를 구성하여 사용자의 사용 권한을 확인하는 방법은 무엇입니까? 아마도 쿼리 디자이너가 SQL Server DB – blueberryfields