首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数据库启动时执行某些脚本

如何在数据库启动时执行某些脚本
EN

Database Administration用户
提问于 2012-01-23 14:38:12
回答 1查看 316关注 0票数 1

当数据库启动时,我想执行一些to代码.

目标是恢复镜像会话,以防当数据库“恢复生命”时会话被“挂起”。

所以我做了这段代码:

代码语言:javascript
复制
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服务器启动时,我如何才能做到这一点呢?

我用这个没有成功:

代码语言:javascript
复制
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
EN

回答 1

Database Administration用户

发布于 2012-01-23 15:30:36

已更新

  1. 为所需创建SQL代理作业。
  2. 为此使用服务器作用域DDL触发器

大致是这样的:

代码语言:javascript
复制
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' 
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/11386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档