잘못된 암호 또는 사용자 이름과 관련된 인증 실패로 인해 연결 시도가 거부되는 경우 클라이언트에 다음과 같은 메시지가 반환됩니다. "사용자 'user_name'이(가) 로그인하지 못했습니다. (Microsoft SQL Server, 오류: 18456)".
잘못된 암호 또는 사용자 이름과 관련된 인증 실패로 인해 연결 시도가 거부되는 경우 클라이언트에 다음과 같은 메시지가 반환됩니다. "사용자 'user_name'이(가) 로그인하지 못했습니다. (Microsoft SQL Server, 오류: 18456)".
보안을 강화하기 위해 클라이언트에 반환되는 오류 메시지에는 인증 오류의 특성이 의도적으로 숨겨져 있습니다. 그러나 SQL Server 오류 로그의 해당하는 오류에는 인증 실패 조건에 매핑되는 오류 상태가 포함되어 있습니다. 로그인 실패 이유를 확인하려면 오류 상태를 다음 목록과 비교하세요.
상태 | 설명 |
1 | 오류 정보를 사용할 수 없습니다. 이 상태는 일반적으로 오류 정보를 받을 수 있는 권한이 없음을 의미 합니다. 자세한 내용은 SQL Server 관리자에게 문의하세요. |
2 | 사용자 ID가 유효하지 않습니다. |
5 | 사용자 ID가 유효하지 않습니다. |
6 | Windows 로그인 이름을 SQL Server 인증에 사용하려고 했습니다. |
7 | 로그인이 사용하지 않도록 설정되어 있고 암호가 올바르지 않습니다. |
8 | 암호가 잘못되었습니다. |
9 | 암호가 유효하지 않습니다. |
11 | 로그인이 유효하지만 서버에 액세스하지 못했습니다. 이 오류의 가능한 원인 한 가지는 Windows 사용자가 로컬 관리자 그룹의 구성원으로 SQL Server에 액세스할 수 있지만 Windows에서 관리자 자격 증명을 제공하지 않는 경우입니다. 연결하려면 [관리자 권한으로 실행] 옵션을 사용하여 연결 프로그램을 시작한 후 Windows 사용자를 SQL Server에 특정 로그인으로 추가합니다. |
12 | 로그인이 유효하지만 서버에 액세스하지 못했습니다. |
18 | 암호를 변경해야 합니다. |
다른 오류 상태가 존재하며 예기치 않은 내부 처리 오류를 나타냅니다.
SQL Server 인증을 사용하여 연결을 시도하는 경우 SQL Server가 혼합 인증 모드로 구성되어 있는지 확인합니다.
SQL Server 인증을 사용하여 연결을 시도하는 경우 SQL Server 로그인이 있고 입력된 철자가 올바른지 확인합니다.
Windows 인증을 사용하여 연결을 시도하는 경우 올바른 도메인에 정상적으로 로그인되어 있는지 확인합니다.
오류가 상태 1을 나타내는 경우 SQL Server 관리자에게 문의하세요.
관리자 자격 증명을 사용하여 연결을 시도하는 경우 [관리자 권한으로 실행] 옵션을 사용하여 응용 프로그램을 시작합니다. 연결되면 Windows 사용자를 개별 로그인으로 추가합니다.
데이터베이스 엔진에서 포함된 데이터베이스를 지원하는 경우 포함된 데이터베이스 사용자로 마이그레이션한 후 로그인이 삭제되지 않았는지 확인합니다.
SQL Server 인스턴스에 로컬로 연결하는 경우 NT AUTHORITY\NETWORK SERVICE로 실행되는 서비스에서 시작되는 연결은 컴퓨터의 정규화된 도메인 이름을 사용하여 인증해야 합니다.
이름 | 설명 | 기본값 |
사용 | 워크플로 사용하거나 사용하지 않도록 설정합니다. | 예 |
간격(초) | 워크플로를 실행하는 반복 시간 간격(초)입니다. | 300 |
우선 순위 | 알림 우선 순위를 정의합니다. | 1 |
심각도 | 알림 심각도를 정의합니다. | 1 |
동기화 시간 | 동기화 시간 |
|
시간 제한(초) | 여기서 지정한 시간 동안 워크플로가 실행된 후 워크플로가 닫히고 실패로 표시됩니다. | 200 |
데이터베이스 연결 시간 제한(초) | 워크플로는 지정된 기간 동안 데이터베이스에 액세스할 수 없으면 실패하며 이벤트를 등록합니다. | 15 |
Target | Microsoft.SQLServer.Windows.DBEngine | ||
Category | EventCollection | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
|
ID | Module Type | TypeId | RunAs |
---|---|---|---|
_F6DA1507_12AF_11D3_AB21_00A0C98620CE_ | DataSource | Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<Rule ID="Microsoft.SQLServer.Windows.EventRule.DBEngine.Login_failed__Account" Target="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine" Enabled="false" ConfirmDelivery="true" Remotable="true">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="_F6DA1507_12AF_11D3_AB21_00A0C98620CE_" TypeID="Microsoft.SQLServer.Windows.DataSource.EventCollectionFiltered">
<MachineName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>200</TimeoutSeconds>
<IntervalSeconds>300</IntervalSeconds>
<SyncTime/>
<EventDisplayNumber>18456</EventDisplayNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="Health!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.Windows.EventRule.DBEngine.Login_failed__Account.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>Event ID: $Data/Property[@Name='EventID']$. $Data/Property[@Name='Message']$</AlertParameter3>
</AlertParameters>
<Suppression>
<SuppressionValue/>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>