SQL Server 2005从简单的Windows更新引发的机器重新启动恢复后,从我们的一个镜像数据库中删除用户。
我检查和login不在镜像服务器(这是在主)。 如果系统发生故障切换,是否可以解释为什么用户在恢复到主服务器时从用户数据库中删除? 我无法在文档中find任何可能表明SQL Server将DROP孤立用户( http://msdn.microsoft.com/zh-cn/library/ms175475%28SQL.90%29.aspx )的内容。 日志中有什么我应该找的?
编辑:失败之前的设置:主要 – login确定。 数据库中的用户确定。 MIRROR – login不存在。 用户在数据库中不存在。
失败后:主要 – login确定。 用户在数据库中不存在。 MIRROR – login不存在。 用户在数据库中不存在。
编辑:上周WINDOWS UPDATES重新启动后恢复数据库系统后,我们注意到我们的表中有一个触发器从另一个用户那里丢失。 我100%有信心,这不是我们的做法(我们只有两个sa,而我就是其中之一)。 到底他妈发生了什么? 这必须是SQL Server 2005镜像的一个bug。
这是我认为发生的事情,这是基于你的孤立用户问题标签的预感,所以我可能是错的。
sp_change_users_login 'Update_One'来修复login问题。 这将改变数据库中的用户sid以匹配数据库服务器上login的sid。 sp_change_users_login来解决问题。 应该发生什么事情:
在参与镜像的数据库中使用的主体login被脚本化(如mr dennybuild议)到镜像。 最简单的方法是使用sp_help_rev_login您也可以使用SSIS传输login任务 。
数据库服务器login的sid在sys.server_principals中可见。 数据库用户的sid位于sys.database_principals中。 检查这些以确保没有错过匹配。
镜像服务器是否创build了login名? 如果没有,你需要编写脚本从主系统的login,以便SID匹配。
用户可能在镜像数据库中,只是没有同步到login。 如果用户在设置镜像时在那里,即使login不存在,SQL Server也不会删除它。 在那。
如果你稍后添加它,它会穿过镜子。 不是login,而是创build用户将被转移。
这是我们的第三方供应商的应用程序将触发器作为其应用程序的一部分。 疯。
触发器是错误的,因为有人丢弃它。 期。 没有冒犯的意图,但是如果你是pipe理员之一,你不知道服务器主体在哪里以及为什么数据库主体可以在故障转移后成为孤儿,那么我不能相信你知道为什么一个触发器消失。
使用默认的pipe理跟踪来找出谁放弃了触发器以及何时。 如果幸运的话,跟踪文件还没有被回收。 设置就地审计,以跟踪从现在开始在您的服务器上发生的变化。 对于pipe理员来说,触发消失时不应该是一个“惊喜”。 不,你不能责怪这个产品。