alter procedure dbo.usp_backup_database
  @p_dbname varchar(50),        -- 备份数据库名称
  @p_type varchar(50)          -- 备份类型,full or log
as
  declare @sql varchar(1000)
  declare @role tinyint
  select 
    @role = dhar.role
  from master.sys.availability_replicas as ar
  left join master.sys.dm_hadr_availability_replica_states as dhar on ar.replica_id = dhar.replica_id
  where exists
  (
    select * from master.sys.availability_groups
    where name='ag_crm_db'
    and ar.group_id = group_id
  )and ar.replica_server_name = SERVERPROPERTY('MachineName') 

  if @role != 1
  begin
    return
  end

  if @p_type = 'full'
  begin
      set @sql = 'backup database [' + @p_dbname + '] to disk = ''D:\backup\' + @p_dbname + '.full.bak'' with format, COMPRESSION'
  end

  if @p_type = 'diff'
  begin
      set @sql = 'backup database [' + @p_dbname + '] to disk = ''D:\backup\' + @p_dbname + '.'+ CAST(DATEPART(weekday,getdate()) as char(1))+'.diff'' with DIFFERENTIAL, format, COMPRESSION'
  end

  if @p_type = 'log'
  begin
      set @sql = 'backup log  [' + @p_dbname + '] to disk = ''D:\backup\' + @p_dbname + '.'+ CAST(DATEPART(hour,getdate()) as varchar(2))+'.log'' with format, COMPRESSION'
  end

  execute(@sql)

 

相关文章:

  • 2022-01-07
  • 2022-12-23
  • 2022-02-14
  • 2022-02-04
  • 2022-12-23
  • 2021-10-26
  • 2021-09-11
  • 2021-11-20
猜你喜欢
  • 2021-09-16
  • 2022-03-05
  • 2021-06-20
  • 2022-12-23
  • 2021-08-21
  • 2022-12-23
  • 2021-12-28
相关资源
相似解决方案