Kvalitetsgranskning av databasmodell, SQL kod, databassäkerhet, backup/restore rutiner, utvecklingsrutiner och driftrutiner. Denna granskning syftar till…
Kortfattat kan man förklara Error 18456 såhär: När en användare loggar in mot en databas och får felmeddelandet Error 18456 är det alltid av säkerhetsskäl med Error State1. State1 säger egentligen inget om orsaken till problemet och för att gå vidare och felsöka och ta reda på vad som är orsaken till problemet, behöver man söka vidare i SQL Server errorloggen efter motsvarande felmeddelande. För att illustrera detta använder jag här SQL Server Management Studio.
Inloggning görs med ett giltigt login id utan lösenord.
För att få fram detaljerna i felmeddelandet öppnar jag Show Technical Details.
Error 18456, Severity 14, State 8 = lösenord matchar inte
(Klicka för att förstora)
Show Technical Details visar att det är Error 18456, Severity 14 och State1. Nästa steg är att söka i SQL Server errorloggen med hjälp av xp_readerrorlog med parametrarna 0 för den aktuella och senaste loggen och 1 för att det är SQL Server errorlog och inte SQL Server agent log jag vill titta på.
USE master EXEC xp_ReadErrorLog 0, 1, N'18456'; --Söker efter strängen 18456 GO EXEC xp_ReadErrorLog 0, 1, N'ayla'; --Söker efter användarid GO
Här görs inloggningen med ett login id som inte är giltigt.
Error 18456, Severity 14, State 5 = Felaktigt login
USE master EXEC xp_ReadErrorLog 0, 1, N'18456'; GO EXEC xp_ReadErrorLog 0, 1, N'Bert'; GO
Här görs inloggningen med ett AD-konto under Authentication: SQL Server Authentication
Error 18456, Severity 14, State 6 = Försöker logga in med AD-konto på SQL Server Authentication
USE master GO EXEC xp_ReadErrorLog 0, 1, N'18456'; GO EXEC xp_ReadErrorLog 0, 1, N'ad-konto'; --Byt ut ad-konto mot relevant login id GO
I det här exemplet är login id disabled och inloggningen görs med fel lösenord
Error 18456, Severity 14, State 7 = Fel lösenord, error evaluating
USE master GO EXEC xp_ReadErrorLog 0, 1, N'18456'; GO EXEC xp_ReadErrorLog 0, 1, N'ayla'; GO
Här är SQL Server instansen i PAUSED mode
Inloggning görs med ett giltigt login id och lösenord.
USE master GO EXEC xp_ReadErrorLog 0, 1, N'17142'; GO EXEC xp_ReadErrorLog 0, 1, N'ayla'; GO
Error 17142, Severity 14, State 0 = SQL Server is paused
USE master GO EXEC xp_ReadErrorLog 0, 1, N'18456'; GO EXEC xp_ReadErrorLog 0, 1, N'paused'; GO
Error 18456, Severity 14, State 13 = SQL Server is paused
Här är en sammanställning av de login Error som jag har testat. Det finns några till, men känner man till dessa så täcker det många av de 18456 error som man kan stöta på.
ERROR | Severity | ERROR STATE | ERROR DESCRIPTION |
18456 | 14 | 5 | Felaktigt användaid |
18456 | 14 | 6 | Försök att använda Windows login med SQL Authentication |
18456 | 14 | 7 | Error evaluating password |
18456 | 14 | 8 | Lösenord matchar inte |
18456 | 14 | 13 | SQL Server är paused |
18470 | 14 | 1 | Konto är disabled |
17142 | 14 | 0 | SQL Server är paused |