什么会导致孤立的## MS_PolicyEventProcessingLogin ##?


9

今天早上,我注意到我的SQL日志中充满了以下消息:

在队列'msdb.dbo.syspolicy_event_queue'上运行的激活的过程'[dbo]。[sp_syspolicy_events_reader]'输出以下内容:
'无法作为数据库主体执行,因为主体“ ## MS_PolicyEventProcessingLogin ##”不存在,这种类型的无法冒充校长,或者您没有权限。”

运行以下命令EXEC sp_change_users_login 'report'表明登录实际上是孤立的。

我能够按照此MSDN帖子中的建议运行以下命令来修复它。

EXEC sp_change_users_login 
    'Auto_Fix', '##MS_PolicyEventProcessingLogin##', 
    NULL, 'fakepassword'

但是问题仍然存在:究竟是什么原因导致该校长最初成为孤儿?谷歌搜索和研究表明,其他人也有这个问题,但是我还没有找到原因的描述。错误开始出现的那一刻,我什么都没有注意到。

去年夏天,我们将整个服务器移至SAN存储模型,此举恢复了所有操作(包括msdb),但那是几个月前。只是最近才使该症状变得明显,因为它早在几周前才出现在日志中。

Answers:


3

我们使用就地升级将两台服务器(从SQL 2000)升级到SQL 2008R2。升级后,我们开始在SQL日志中获取这些消息。在升级过程中,我们没有更改此登录名或其他任何登录名或用户。

我的猜测是升级过程中使两个帐户(##MS_PolicyEventProcessingLogin####MS_PolicyTsqlExecutionLogin##)变为孤立状态。

EXEC sp_change_users_login 'Auto_Fix', '<User Name>' 解决了这个问题。


2

典型原因:有人放弃登录(认为他们正在清理错误的登录名)或还原系统数据库之一。

不过,很难猜测这是什么。在用户数据库中,您可以浏览事务日志以对其进行反向工程,但是您不能为主数据库进行日志备份,因此很不走运。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.