我有3个数据库,(一个校长,一个镜像和一个目击者),我试图使这个系统尽可能的容错。
所以,我想做一些额外的编码,以保护我避免失去证人在某些情况下。
我想在mirroring_state_desc数据库中跟踪SYS.database_mirroring,这样如果它从同步变为断开,我就会知道将它提升到主体是不安全的,但是如果它从同步变为断开可以提升它(我是在高安全模式下工作)。
我的第一种方法是让一个定制的windows服务监视这个table...but,这样做--我对数据库做了很多不必要的选择。
所以我想,也许扳机就是我要找的.但我一直坚持
CREATE TRIGGER modify_state ON SYS.database_mirroring FOR INSERT, UPDATE我需要其他语法的帮助。
我有一个state_db数据库,包含两个列(last_state和current_state),我需要能够检查当前的状态,以及last_state中的状态。如果它们不同,我想用current_state修改current_state,用从SYS.database_mirroring读取的新状态修改current_state
我的问题是,我是否可以使用触发器进行插入和修改,以保持一个带有SYS.database_mirroring最后2种状态的辅助数据库?如果是,我该怎么做?
发布于 2011-12-25 01:17:57
不能在系统对象上创建触发器。所以走你想的路是不可能的。
要提高容错能力,最好的办法是将Witness数据库移动到它自己的服务器硬件上(而不仅仅是在同一个框上的另一个实例,即使SQL server允许您这样设置它),这与主体和镜像都是分开的。
这样,您就不太可能出现同时取出主体数据库和镜像数据库的故障。
https://dba.stackexchange.com/questions/9671
复制相似问题