我注意到我们的 SQL 服务器反复出现登录失败的情况。每分钟都会发生相同的登录。日志文件查看器中的一个例子
2011 年 10 月 18 日 13:54:50,登录,未知,用户“LOLZOR\lolsqlserver”登录失败。[客户端:] 2011 年 10 月 18 日 13:54:50,登录,未知,错误:18456 严重性:14 状态:16
州 16意思是:登录有效,但没有权限使用目标数据库
请注意,凭据还用于启动所有 SQL Server 服务
Audit Login Failed
NTDomainName>LOLZOR
Error 18456
HostName EU_LOLWEB1
SPID">71</Column>
SessionLoginName"LOLZOR\lolsqlserver
TextData">Login failed for user 'LOLZOR\lolsqlserver'
ClientProcessID"2364
NTUserName"lolsqlserver
ApplicationName">Queue Reader Main (distribution)
StartTime">2011-10-18T12:18:21.72+02:00
ServerName">EU_LOLWEB1
DatabaseID">1</Column>
LoginName">LOLZOR\lolsqlserver
DatabaseName">master
EventSequence">528
- 你会注意到登录源自 SQL 服务器本身
- 目标数据库似乎指向“Master”(见下文)
- 如果我跟踪进程监视器中的 pid,我可以看到登录是由 qrdsvc.exe 执行的
描述
Description: SQL Server Replication QueueReader Agent
Company: Microsoft Corporation
Name: qrdrsvc.exe
Version: 2005.90.4035.0
Path: C:\Program Files\Microsoft SQL Server\90\COM\qrdrsvc.exe
Command Line: "C:\Program Files\Microsoft SQL Server\90\COM\qrdrsvc.exe" -Distributor [EU_LOLWEB1] -DistributionDB [distribution] -DistributorSecurityMode 1 -Continuous -XJOBID 0xA368ED128C0EAA43A137B55FD4DD122F -XJOBNAME [[EU_LOLWEB1]].8] -XSTEPID 2 -XSUBSYSTEM Que
PID: 6096
Parent PID: 300
Session ID: 0
User: LOLZOR\lolsqlserver
Auth ID: 00000000:a3d8bc8d
Architecture: 32-bit
Virtualized: n/a
Integrity: n/a
Started: 18/10/2011 11:43:25
Ended: 18/10/2011 11:43:25
据我了解http://www.eraofdata.com/blog/sql-18456-login-failures/ 是用户帐户对Master数据库没有足够的权限。
作为测试,我将 LOLZOR\lolsqlserver 添加到 sysadmin 角色并重新启动 SQL 服务。这并没有改变任何东西。该消息仍然每分钟弹出一次。
既然帐户正在运行服务,这怎么可能呢?我想解决这个问题,如果能得到帮助我将不胜感激。
答案1
我将尝试从以下几点来解决这个问题:
- 您的 SQL 代理 上是否存在任何不熟悉的作业?
- 您在服务器本身上是否有任何不熟悉的计划作业?
我只想排除第 1 项和第 2 项,现在让我们继续讨论第 3 项
您之前说过您已经设置了复制并且停止使用它,这让我认为您有一些导致复制尝试的设置的残留。
看一下这里和这里- 这是存储所有复制设置的地方,也许您会发现有问题的配置。
关于第二个链接,在该实例的每个数据库上进行类似的简单查询可能会有所帮助。
SELECT * FROM sys.tables WHERE is_replicated = 1
我希望这可以为这个问题提供更多的启示,我将非常感激你能回复你收集到的详细信息。
谢谢,伊丹。
答案2
该服务应尝试连接到“分发”数据库。如果该数据库不可用(离线、已删除、当前正在恢复等),您可能会收到此错误。
如果您不再使用任何复制,只需禁用该服务,然后查找有关在不使用分发后清理 SQL 的常见问题。有类似的存储过程EXEC sp_helpdistributiondb
可以告诉您有关当前设置的信息。该过程应该只在分发 SQL 服务器上运行……但您担心的服务也应该只在分发服务器上运行。如果它认为事情很糟糕,那么在您修复问题之前,该服务将永远无法正常工作。
如果一切就绪、配置正确,并且确实应该运行,请验证返回结果是否SELECT @@SERVERNAME
与 SQL Server 的当前主机名相匹配。分发无法很好地处理其连接字符串中的别名、IP 地址等。