当数据库启动时,我想执行一些to代码.
目标是恢复镜像会话,以防当数据库“恢复生命”时会话被“挂起”。
所以我做了这段代码:
begin try
Declare @state_desc nvarchar(60)
SELECT @state_desc = mirroring_state_desc
FROM SYS.database_mirroring
WHERE database_id = DB_ID('MyDataBase')
if @state_desc = 'SUSPENDED'
begin
ALTER DATABASE [MyDataBase] SET PARTNER RESUME
end
end try
begin catch
end catch但是当sql服务器启动时,我如何才能做到这一点呢?
我用这个没有成功:
create procedure dbm_startup_resume
as
begin
begin try
Declare @state_desc nvarchar(60)
WAITFOR DELAY '00:00:10'
SELECT @state_desc = mirroring_state_desc
FROM SYS.database_mirroring
WHERE database_id = DB_ID('MinhaBaseDeDados')
if @state_desc = 'SUSPENDED'
begin
ALTER DATABASE [MinhaBaseDeDados] SET PARTNER RESUME
end
end try
begin catch
end catch
exec sp_procoption @ProcName = dbm_startup_resume,
@OptionName = startup, @OptionValue = 'on'
end发布于 2012-01-23 15:30:36
已更新
大致是这样的:
Create TRIGGER ddl_trig_AlterDatabes
ON ALL SERVER
FOR ALTER_DATABASE
AS
-- your code here
-- use EventData() to check database name if needed.. or other info..
Exec msdb..sp_start_job @job_name = 'job_name' https://dba.stackexchange.com/questions/11386
复制相似问题