说起Login failed我们首先会想起密码错误,但密码错误只是众多login failed中的一个,本篇将罗列各类login failed在ERRORLOG中的表现,以及如何提取这类错误信息。
通过SQLServer身份验证连接数据库,先检查登录名是否存在,再验证密码是否正确,然后检查用户是否被禁用、是否被锁定、密码是否过期。
可以用下面语句,重现各种Login failed情况。

/**** 本地安全策略参考:http://www.cnblogs.com/Uest/p/4658399.html#secpol ****/
--解除锁定
ALTER
LOGIN Tear WITH PASSWORD = 'Tear' UNLOCK
--启用帐户
ALTER LOGIN Tear ENABLE
--过期帐户用正确的密码登录,运行完后,延长密码策略中的“密码最长使用期限”
EXEC MASTER..xp_cmdshell
'bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear" -c -b2000'
--用错误的登录名
EXEC MASTER..xp_cmdshell
'bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear66" -P"Tear" -c -b2000'
GO 2
--登录名强制实施密码策略,且帐户锁定阈值>0,此时使用错误密码登录数据库,失败次数达到设定阈值就会lock account
EXEC MASTER..xp_cmdshell
'bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear1" -c -b2000'
GO 6
--锁定情况下用正常密码
EXEC MASTER..xp_cmdshell
'bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear" -c -b2000'
GO 5
--禁用帐户
ALTER LOGIN Tear DISABLE
--错误密码登录
EXEC MASTER..xp_cmdshell
'bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear1" -c -b2000'
GO 4
--正确密码登录
EXEC MASTER..xp_cmdshell
'bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear" -c -b2000'
GO 3

ERRORLOG错误日志中的信息如下

--密码过期
2014-08-13 21:22:41.370 登录 错误: 18487,严重性: 14,状态: 1。
2014-08-13 21:22:41.370 登录 Login failed for user 'Tear'. Reason: The password of the account has expired. [客户端: 127.0.0.1]
--错误的登录名
2014-08-13 21:23:57.630 登录 错误: 18456,严重性: 14,状态: 5。
2014-08-13 21:23:57.630 登录 Login failed for user 'Tear66'. 原因: 找不到与提供的名称匹配的登录名。 [客户端: 127.0.0.1]
2014-08-13 21:23:57.750 登录 错误: 18456,严重性: 14,状态: 5。
2014-08-13 21:23:57.750 登录 Login failed for user 'Tear66'. 原因: 找不到与提供的名称匹配的登录名。 [客户端: 127.0.0.1]
--错误的密码
2014-08-13 21:24:00.720 登录 错误: 18456,严重性: 14,状态: 8。
2014-08-13 21:24:00.720 登录 Login failed for user 'Tear'. 原因: 密码与所提供的登录名不匹配。 [客户端: 127.0.0.1]
2014-08-13 21:24:00.840 登录 错误: 18456,严重性: 14,状态: 8。
2014-08-13 21:24:00.840 登录 Login failed for user 'Tear'. 原因: 密码与所提供的登录名不匹配。 [客户端: 127.0.0.1]
2014-08-13 21:24:01.000 登录 错误: 18456,严重性: 14,状态: 8。
2014-08-13 21:24:01.000 登录 Login failed for user 'Tear'. 原因: 密码与所提供的登录名不匹配。 [客户端: 127.0.0.1]
2014-08-13 21:24:01.210 登录 错误: 18456,严重性: 14,状态: 8。
2014-08-13 21:24:01.210 登录 Login failed for user 'Tear'. 原因: 密码与所提供的登录名不匹配。 [客户端: 127.0.0.1]
2014-08-13 21:24:01.380 登录 错误: 18456,严重性: 14,状态: 8。
2014-08-13 21:24:01.380 登录 Login failed for user 'Tear'. 原因: 密码与所提供的登录名不匹配。 [客户端: 127.0.0.1]
2014-08-13 21:24:01.520 登录 错误: 18456,严重性: 14,状态: 8。
2014-08-13 21:24:01.520 登录 Login failed for user 'Tear'. 原因: 密码与所提供的登录名不匹配。 [客户端: 127.0.0.1]
--锁定情况下用正常密码
2014-08-13 21:24:04.920 登录 错误: 18486,严重性: 14,状态: 1。
2014-08-13 21:24:04.920 登录 Login failed for user 'Tear' because the account is currently locked out. The system administrator can unlock it. [客户端: 127.0.0.1]
2014-08-13 21:24:05.050 登录 错误: 18486,严重性: 14,状态: 1。
2014-08-13 21:24:05.050 登录 Login failed for user 'Tear' because the account is currently locked out. The system administrator can unlock it. [客户端: 127.0.0.1]
2014-08-13 21:24:05.330 登录 错误: 18486,严重性: 14,状态: 1。
2014-08-13 21:24:05.330 登录 Login failed for user 'Tear' because the account is currently locked out. The system administrator can unlock it. [客户端: 127.0.0.1]
2014-08-13 21:24:05.630 登录 错误: 18486,严重性: 14,状态: 1。
2014-08-13 21:24:05.630 登录 Login failed for user 'Tear' because the account is currently locked out. The system administrator can unlock it. [客户端: 127.0.0.1]
2014-08-13 21:24:05.840 登录 错误: 18486,严重性: 14,状态: 1。
2014-08-13 21:24:05.840 登录 Login failed for user 'Tear' because the account is currently locked out. The system administrator can unlock it. [客户端: 127.0.0.1]
--禁用帐户后用错误密码登录
2014-08-13 21:24:11.950 登录 错误: 18456,严重性: 14,状态: 7。
2014-08-13 21:24:11.950 登录 Login failed for user 'Tear'. 原因: 评估密码时出错。 [客户端: 127.0.0.1]
2014-08-13 21:24:12.300 登录 错误: 18456,严重性: 14,状态: 7。
2014-08-13 21:24:12.300 登录 Login failed for user 'Tear'. 原因: 评估密码时出错。 [客户端: 127.0.0.1]
2014-08-13 21:24:12.470 登录 错误: 18456,严重性: 14,状态: 7。
2014-08-13 21:24:12.470 登录 Login failed for user 'Tear'. 原因: 评估密码时出错。 [客户端: 127.0.0.1]
2014-08-13 21:24:12.600 登录 错误: 18456,严重性: 14,状态: 7。
2014-08-13 21:24:12.600 登录 Login failed for user 'Tear'. 原因: 评估密码时出错。 [客户端: 127.0.0.1]
--禁用帐户后用正确密码登录
2014-08-13 21:24:16.430 登录 错误: 18470,严重性: 14,状态: 1。
2014-08-13 21:24:16.430 登录 Login failed for user 'Tear'. Reason: The account is disabled. [客户端: 127.0.0.1]
2014-08-13 21:24:16.550 登录 错误: 18470,严重性: 14,状态: 1。
2014-08-13 21:24:16.550 登录 Login failed for user 'Tear'. Reason: The account is disabled. [客户端: 127.0.0.1]
2014-08-13 21:24:16.680 登录 错误: 18470,严重性: 14,状态: 1。
2014-08-13 21:24:16.680 登录 Login failed for user 'Tear'. Reason: The account is disabled. [客户端: 127.0.0.1]
--达到最大并发连接数
2014-08-13 21:26:19.660 登录 错误: 17809,严重性: 20,状态: 3。
2014-08-13 21:26:19.660 登录 Could not connect because the maximum number of '' user connections has already been reached. The system administrator can use sp_configure to increase the maximum value. The connection has been closed. [客户端: 127.0.0.1]

可以用下面语句筛选,并发送邮件提醒,可根据自己的需求,调整代码:

 declare @startTime datetime
declare @endTime datetime
set @startTime = DATEADD(mi,-5,GETDATE())
set @endTime = GETDATE()
insert into Login_Errorlog
exec master.dbo.xp_ReadErrorLog 0, 1, N'Failed', N'login',@startTime,@endTime
insert into Login_Errorlog
exec master.dbo.xp_ReadErrorLog 0, 1, N'connections', N'to increase the maximum value',@startTime,@endTime select IDENTITY(INT ,1 ,1) Id,a.LoginName,a.Ip,a.Reason,count(a.LoginName) FailedCount
into #LoginsFailed
from (
SELECT substring(Text,charindex('''',Text)+1,charindex('''',Text,charindex('''',Text)+1)-charindex('''',Text)-1) LoginName
,ltrim(rtrim(substring(Text,charindex('''',Text,charindex('''',Text)+1)+2,charindex('[',text)-charindex('''',Text,charindex('''',Text)+1)-3))) Reason
,ltrim(rtrim(substring(Text,charindex('[',text),charindex(']',text)-charindex('[',text)+1))) Ip
FROM [dbo].[Login_Errorlog]
where LogDate>=dateadd(mi,-5,getdate())
and Text like 'Login%'
) a
group by a.LoginName,a.Ip,a.Reason
order by count(a.LoginName) desc select IDENTITY(INT ,1 ,1) Id,a.Ip,a.Reason,count(a.Ip) FailedCount
into #ConnectClosed
from (
SELECT substring(Text,1,charindex('.',Text)) Reason
,ltrim(rtrim(substring(Text,charindex('[',text),charindex(']',text)-charindex('[',text)+1))) Ip
FROM [dbo].[Login_Errorlog]
where LogDate>=dateadd(mi,-5,getdate())
and Text like '%connections%'
) a
group by a.Ip,a.Ip,a.Reason
order by count(a.Ip) desc DECLARE @html_tb VARCHAR(MAX) ,@html_tb1 VARCHAR(MAX)
,@Subject VARCHAR(50)
,@Recipients VARCHAR(200) SET @html_tb = ''
SET @html_tb1 = '' IF EXISTS(SELECT 1 FROM #LoginsFailed)
BEGIN
SET @html_tb =
N'<style>td{FONT-FAMILY: 宋体, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}th{FONT-FAMILY: 宋体, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}</style>
<H1>数据库登录失败检查(截至'+convert(varchar(16),GETDATE(),120)+')</H1>
<table width = "100%" border="0" cellspacing="0" cellpadding="0" style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid;BORDER-TOP: black 1px solid">
<tr><th>自增编号</th><th>登录名</th><th>登录IP</th><th>失败原因</th><th>失败次数</th>
</tr>' +
CAST(
(
SELECT td = Id
,''
,td = LoginName
,''
,td = Ip
,''
,td = Reason
,''
,td = FailedCount
,''
FROM #LoginsFailed
ORDER BY
Id
FOR XML PATH('tr')
) AS NVARCHAR(MAX)
) +
N'</table><br>'
END
IF EXISTS(SELECT 1 FROM #ConnectClosed)
BEGIN
SET @html_tb1 =
N'<style>td{FONT-FAMILY: 宋体, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}th{FONT-FAMILY: 宋体, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}</style>
<H1>数据库连接数超限检查(截至'+convert(varchar(16),GETDATE(),120)+')</H1>
<table width = "100%" border="0" cellspacing="0" cellpadding="0" style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid;BORDER-TOP: black 1px solid">
<tr><th>自增编号</th><th>登录IP</th><th>失败原因</th><th>失败次数</th>
</tr>' +
CAST(
(
SELECT td = Id
,''
,td = Ip
,''
,td = Reason
,''
,td = FailedCount
,''
FROM #ConnectClosed
ORDER BY
Id
FOR XML PATH('tr')
) AS NVARCHAR(MAX)
) +
N'</table><br>'
END
SET @html_tb = @html_tb+@html_tb1
IF @html_tb<>''
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'Uest'
,@recipients = 'Uest@126.com'
,@body = @html_tb
,@subject = '数据库登录失败检查'
,@body_format = 'HTML' DROP TABLE #LoginsFailed
DROP TABLE #ConnectClosed

附上邮件提醒效果图:

Login failed知多少的更多相关文章

  1. SSAS:OLE DB 错误: OLE DB 或 ODBC 错误 : Login failed for user 'NT Service\MSSQLServerOLAPService'

    问题描述 按照微软官方教程尝试使用SSAS做OLAP时,出现如下错误信息: Severity Code Description Project File Line Suppression State ...

  2. Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON

    I create a very simple website.when I run website from VS2012 ,website easily can get data from SQLS ...

  3. Azure SQL Virtual Machine报Login failed for user 'NT Service\SqlIaaSExtension'. Reason: Could not find a login matching the name provided

    在一台位于HK的Azure SQL Virtual Machine上修改排序规则,重建系统数据库后,监控发现大量的登录失败告警生成,如下所示: DESCRIPTION:  Login failed f ...

  4. 500 OOPS: bad bool value in config file for: anon_world_readable_only Login failed.

    [root@hyc ~]# ftp 192.168.254.5 Connected to 192.168.254.5 (192.168.254.5). Welcome to blah FTP serv ...

  5. "Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。"异常处理

    公司一台SQL Server服务器一直报 "Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库."错误,按网 ...

  6. Login failed for user 'IIS APPPOOL\ASP.NET v4.0'

    Looks like it's failing trying to open a connection to SQL Server. You need to add a login to SQL Se ...

  7. [javamail]AUTH LOGIN failed;Invalid username or password报错

    项目中需要用到javamailAPI,邮箱服务器用的sohu闪电邮,SMTP协议用来发送,赋值代码: Properties props = new Properties(); props.setPro ...

  8. SQL SERVER linked server Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

    昨天创建了一个View, 这个view是一系列的表达式(CTE)组成,封装了好多的业务逻辑,简化下语句如下 ;with CTE AS( ...) SELECT a.company_id ,b.comp ...

  9. xxx while the managed IDbConnection interface was being used: Login failed for user xxx

    Process cube的时候遇到如下错误.   Errors in the high-level relational engine. The following exception occurre ...

随机推荐

  1. Radeon HD 7850 vs Radeon R9 270X

    Radeon HD 7850 vs Radeon R9 270X  HW compare   Intro The Radeon HD 7850 comes with a GPU core speed ...

  2. Open vSwitch流表应用实战

    本文参考:Open vSwitch流表应用实战 一个通过改变流表下发而实现的互相通信实验. 实验目的: 掌握Open vSwitch下发流表操作: 掌握添加.删除流表命令以及设备通信的原理. 原理:. ...

  3. Nginx 配置 Basic 认证

    /* * 环境:LNMP(CentOS 6.6 + Nginx 1.8.0) */ 在 Nginx 下配置 Basic 认证需要依靠 Nginx 的 http_auth_basic_module 模块 ...

  4. PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [4] 首页 APP 接口开发方案 ③ 定时读取缓存方式

    用于 linux 执行 crontab 命令生成缓存的文件 crop.php <?php //让crontab 定时执行的脚本程序 require_once 'db.php'; require_ ...

  5. Bootstrap页面布局13 - BS按钮

    bootstrap中的按钮类 一般可以作为按钮的标签有:<a></a>  <button></button>  <input type='butt ...

  6. 使用 Linux 搭建 VPN

    http://blog.csdn.net/catoop/article/details/7537012 VPN服务器的配置与应用 实验场景 通过将Linux配置VPN服务器允许远程计算机能够访问内网. ...

  7. wdate-year-month-week-gategory-amount-coin

    ---2016-12-02 19:46:39 the whole table DISTINCT field SUM(field) COUNT(field) --- 888983 rows OK SEL ...

  8. python 之 utf-8编码的秘密

    python3的默认编码方案是utf-8编码,看了些资料,来做总结. 要说utf-8,就要说说unicode,要说unicode,就要说ASCII,我们还是慢慢来. 1.ASCII ASCII编码最初 ...

  9. delphi android 录像(调用Java的功能)

    delphi xe系列自带的控件都无法保存录像,经网友帮忙,昨天终于实现了录像功能(但有个问题是录像时无画面显示),程序主要使用了JMediaRecorder,MediaRecorder的使用方法可参 ...

  10. BAT 遍历文件夹和子文件夹下所有文件

    echo off & color 0A ::指定起始文件夹 set DIR="%cd%" echo DIR=%DIR% :: 参数 /R 表示需要遍历子文件夹,去掉表示不遍 ...