YourSQLDba版本升级总结

在使用YourSQLDba做数据库备份、维护时,像其它软件一样,版本升级是不可避免的。因为YourSQLDba一直在不停更新版本、扩展功能。下面介绍一下升级YourSQLDba时的具体步骤和一些注意事项。下面案例,YourSQLDba原版本为YourSQLDba version: 5.0.2 2012-06-12,升级到YourSQLDba 6.2.5.1。

步骤1: 首先查看服务器对应YourSQLDba的版本信息。因为不同版本的升级可能有所区别。要做的工作可能不一样。

Exec YourSQLDba.Install.PrintVersionInfo

 

========================================

 

YourSQLDba version: 5.0.2 2012-06-12

 

========================================

步骤2:查看YourSQLDba下的所有作业信息。

这个步骤,主要是因为我们在不同程度的扩展了YourSQLDba的一些功能。另外,有可能你对YourSQLDba_FullBackups_And_Maintenance等作业做了一些修改、变更。所以在升级前对变跟的地方有所了解,记录整理,方便升级后做出对应的修改。 如果你没有对YourSQLDba做任何修改、扩展,那么可以忽略这个步骤。

使用下面SQL将所有YourSQLDba的作业列出来,然后收集、整理是否有做变跟。是否需要在升级后,做出对应的调整、修改。

SELECT j.job_id                                       AS JOB_ID            
      ,j.name                                         AS JOB_NAME          

      ,CASE WHEN [enabled] =1 THEN ‘Enabled‘

                              ELSE ‘Disabled‘ END     AS JOB_ENABLED       

      ,j.category_id                                  AS JOB_CATEGORY_ID

      ,c.name                                         AS JOB_CATEGORY_NAME

      ,[description]                                  AS JOB_DESCRIPTION   

      ,date_created                                   AS DATE_CREATED      

      ,date_modified                                  AS DATE_MODIFIED

FROM msdb.dbo.sysjobs j

INNER JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id

WHERE   job_id IN( SELECT job_id

                  FROM    msdb.dbo.sysjobsteps

                  WHERE   database_name = ‘YourSQLDba‘ )

 ORDER BY j.name

步骤3:执行YourSQLDba脚本,如果你没有做任何扩展。那么直接执行脚本即可,不需要修改任何脚本。

如果你研究过了脚本,那么你们会发现,YourSQLDba是会保留原来的数据的,在代码里面,你会看到在删除YourSQLDba数据库之前,脚本会将先前YourSQLDba的数据保存到临时表。

If databasepropertyEx(‘YourSQLDba‘,‘status‘) IS NOT NULL -- db is there
Begin

  -- save data about some YourSqlDba tables

  If object_id(‘tempdb..##JobHistory‘) is not null Drop table ##JobHistory;

  If object_id(‘tempdb..##JobLastBkpLocations‘) is not null Drop table ##JobLastBkpLocations;

  If object_id(‘tempdb..##JobSeqCheckDb‘) is not null Drop table ##JobSeqCheckDb;

  If object_id(‘tempdb..##TargetServer‘) is not null Drop table ##TargetServer;

  If object_id(‘tempdb..##JobSeqUpdStat‘) is not null Drop table ##JobSeqUpdStat;

  If object_id(‘tempdb..##NetworkDrivesToSetOnStartup‘) is not null Drop table ##NetworkDrivesToSetOnStartup;

 

  -- If table exists in previous version save its content

  If Object_id(‘YourSqlDba.Maint.JobHistory‘) IS NOT NULL

    Select * Into ##JobHistory From YourSqlDba.Maint.JobHistory

 

  If Object_id(‘YourSqlDba.Maint.JobLastBkpLocations‘) IS NOT NULL

    Select * Into ##JobLastBkpLocations From YourSqlDba.Maint.JobLastBkpLocations

 

  If Object_id(‘YourSqlDba.Mirroring.TargetServer‘) IS NOT NULL

    Select * Into ##TargetServer From YourSqlDba.Mirroring.TargetServer

 

  If Object_id(‘YourSqlDba.Maint.JobSeqUpdStat‘) IS NOT NULL

    Select * Into ##JobSeqUpdStat From YourSqlDba.Maint.JobSeqUpdStat

 

  If Object_id(‘YourSqlDba.Maint.JobSeqCheckDb‘) IS NOT NULL

    Select * Into ##JobSeqCheckDb From YourSqlDba.Maint.JobSeqCheckDb

 

  If Object_id(‘YourSqlDba.Maint.NetworkDrivesToSetOnStartup‘) Is NOT NULL

    Select * Into ##NetworkDrivesToSetOnStartup From YourSqlDba.Maint.NetworkDrivesToSetOnStartup

然后在YourSQLDba创建成功后,将数据导入到新建的表后,删除临时表。部分脚本如下所示:

-- if the table doesn‘t exists create the latest version
If object_id(‘Maint.JobSeqCheckDb‘) is null 

Begin

  Declare @sql nvarchar(max)

  Set @sql =

  ‘

  Create table  Maint.JobSeqCheckDb

  (

    seq         int

  )

  Insert into Maint.JobSeqCheckDb values(0)

  ‘

  Exec (@sql)

 

  If Object_Id(‘tempdb..##JobSeqCheckDb‘) IS NOT NULL

    Exec

    (

    ‘

    Insert Into Maint.JobSeqCheckDb (seq) 

    Select Seq

    From ##JobSeqCheckDb

    Drop table ##JobSeqCheckDb

    ‘

    )

End

GO

如果你做过扩展,例如我按天、周、月监控数据库的增长情况,那么我要在YourSQLDba升级过程中保留这些历史数据,那么就必须修改这部分脚本(这些涉及太多脚本,不宜在此贴过多脚本,在此不做过多探讨)。YourSQLDba脚本升级成功后,会有下面提示信息

步骤4:更新YourSQLDba_FullBackups_And_Maintenance和YourSQLDba_LogBackups作业。

首先,在YourSQLDba升级过程中,脚本并不会更新这两个作业。在前面的几个版本中,都不需要重新新作业YourSQLDba_FullBackups_And_Maintenance等,因为即使版本不一样,但是作业功能基本是一致的。但是像这样两个版本差别大的时候, 作业里面执行的存储过程的参数都不一样了。例如5.0.2,里面全备的执行的存储过程为

exec Maint.YourSqlDba_DoMaint
  @oper = ‘YourSQLDba_Operator‘

, @MaintJobName = ‘YourSQLDba: DoInteg,DoUpdateStats,DoReorg,Full backups‘

, @DoInteg = 1

, @DoUpdStats = 1

, @DoReorg = 1

, @DoBackup = ‘F‘

, @FullBackupPath = ‘M:\DB_BACKUP\FULL_BACKUP\‘ 

, @LogBackupPath = ‘M:\DB_BACKUP\LOG_BACKUP\‘  

-- Flush database backups older than the number of days

, @FullBkpRetDays = 1 

-- Flush log backups older than the number of days

, @LogBkpRetDays = 2

-- Spread Update Stats over 7 days 

, @SpreadUpdStatRun =1

-- Maximum number of consecutive days of failed full backups allowed

-- for a database before putting that database (Offline). 

, @ConsecutiveDaysOfFailedBackupsToPutDbOffline = 9999 

-- Each database inclusion filter must be on its own line between the following quote pair

, @IncDb = 

‘ 

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDb = 

‘ 

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDbFromPolicy_CheckFullRecoveryModel = 

‘ 

但是6.2.5.1里面,执行的存储过程如下所示,多了参数 @SpreadCheckDb,参数@ConsecutiveDaysOfFailedBackupsToPutDbOffline名字变了,如果不做修改,那么作业就会报错。

exec Maint.YourSqlDba_DoMaint
  @oper = ‘YourSQLDba_Operator‘

, @MaintJobName = ‘YourSQLDba: DoInteg,DoUpdateStats,DoReorg,Full backups‘

, @DoInteg = 1

, @DoUpdStats = 1

, @DoReorg = 1

, @DoBackup = ‘F‘

, @FullBackupPath = ‘M:\DB_BACKUP\FULL_BACKUP\‘ 

, @LogBackupPath = ‘M:\DB_BACKUP\LOG_BACKUP\‘  

-- Flush database backups older than the number of days

, @FullBkpRetDays = 1

-- Flush log backups older than the number of days

, @LogBkpRetDays =2

-- Spread Update Stats over 7 days 

, @SpreadUpdStatRun = 1

-- Spread Check DB without ‘PHYSICAL_ONLY‘ over 7 days

, @SpreadCheckDb = 7

-- Maximum number of consecutive days of failed full backups allowed

-- for a database before putting that database (Offline). 

, @ConsecutiveDaysOfFailedBackupsToPutDbOffline = 0 

-- Each database inclusion filter must be on its own line between the following quote pair

, @IncDb = 

‘ 

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDb = 

‘ 

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDbFromPolicy_CheckFullRecoveryModel = 

‘ 

而升级脚本并不会重建或更新作业,所以我们执行初始化脚本YourSQLDba.[Install].[InitialSetupOfYourSqlDba]更新作业。注意,执行该脚本后,你原来的配置参数都会使用初始化参数,例如(@FullBkpRetDays,@LogBkpRetDays…..等),另外,像YourSQLDba_LogBackups作业的Schedule变为15分钟做一次事务日志备份,在执行脚本前,最好记录原来的参数,以免影响原来的备份策略。

EXEC YourSQLDba.[Install].[InitialSetupOfYourSqlDba]  
  @FullBackupPath = ‘M:\DB_BACKUP\FULL_BACKUP\‘ -- full backup path destination 

 ,@LogBackupPath = ‘M:\DB_BACKUP\LOG_BACKUP\‘   -- log backup path destination 

 ,@email = ‘[email protected]‘                  -- Email recipients (or distribution list)

 ,@SmtpMailServer = ‘xxx.xxx.xxx.xxx‘             -- Mail server that accept SMTP mail 

 ,@ConsecutiveDaysOfFailedBackupsToPutDbOffline = 9999 

另外,如果我们扩展了YourSQLdba的脚本,此时就必须添加相应存储过程,作业倒不必新建(因为YourSQLDba升级不会删除作业,但是由于YourSQLDba数据库重建了,所以作业里面调用的存储过程可能没有了)。

时间: 2024-10-14 11:40:05

YourSQLDba版本升级总结的相关文章

MySQL版本升级

日常工作中,数据版本升级是常有的事,升级过程非常简单,但也容易忽视一些问题 1.大版本号和小版本号,使用在什么位(32/64)的系统上 2.或者5.1的默认使用区分大小写,若5.6使用不区分,这会导致APP找不到库的,所以需要注意 3.就是5.1到5.6升级没问题,但到5.7,有时候会提示: ERROR 1031 (HY000) at line 833: Table storage engine for 'histories' doesn't have this option 这是为什么呢?因为

ubuntu下docker安装与版本升级

ubuntu 下docker安装与版本升级 一.系统环境 系统:ubuntu-server 14.04 x86_64 内核:3.13.0-32-generic 二.Docker安装 --------------------------------------------------------------------------------- 要想安装最新版本的Docker需要使用Docker源来安装 $ sudo su - root # apt-get -y installapt-transp

跨平台开发,如何进行版本升级?

大家知道,在移动APP开发完毕后,为不短提高用户体验,以及解决一些莫名其妙的bug,总需要对应用进行版本升级.那么问题来了,跨平台开发APP时,怎样快速进行版本升级呢?或许,你需要找对一个同时兼具开发与升级功能的移动开发平台. AppCan开发平台提供的版本升级功能,可以帮助开发者轻松完成应用推送升级.取消升级和应用下架.具体操作如下: 1.推送升级: 进入应用管理界面,点击"推送升级"后进入到升级信息配置页面,升级地址默认为AppCan地址,开发者可以自己搭建升级服务器,将升级地址填

python版本升级及pip部署方法

Python版本升级 CentOS 6.3自带的Python版本为2.6,首先需要升级到2.7版本.由于旧版本的Python已被深度依赖,所以不能卸载原有的Python,只能全新安装. 1.下载Python-2.7.4.tgz wget http://python.org/ftp/python/2.7.4/Python-2.7.4.tgz 2. 解压安装,命令如下: 1 tar -xvf Python-2.7.4.tgz 2 cd Python-2.7.4 3 ./configure --pre

Netty版本升级血泪史之线程篇

1. 背景 1.1. Netty 3.X系列版本现状 根据对Netty社区部分用户的调查,结合Netty在其它开源项目中的使用情况,我们可以看出目前Netty商用的主流版本集中在3.X和4.X上,其中以Netty 3.X系列版本使用最为广泛. Netty社区非常活跃,3.X系列版本从2011年2月7日发布的netty-3.2.4 Final版本到2014年12月17日发布的netty-3.10.0 Final版本,版本跨度达3年多,期间共推出了61个Final版本. 1.2. 升级还是坚守老版本

NetScaler版本升级

1.NetScaler版本升级说明 需求:通过shell方式升级NetScaler [拓扑] 2.升级前准备 准备版本升级所需的版本文件 使用浏览器打开https://www.citrix.com/downloads/netscaler-adc/登录后选择需要的升级包进行DownLoad 选择tgz升级包 准备版本升级所需的必要工具 3.升级过程 使用SSH工具登录NetScaler查看当前版本信息 将升级包使用SFTP工具上传到NetScaler的 /var/nsinstall/build-1

YourSQLDba设置共享路径备份

YourSQLDba可以将数据库备份到网络路径(共享路径),这个也是非常灵活的一个功能,以前一直没有使用过这个功能,最近由于一个需求,于是我测试了一下YourSQLDba备份到网络路径,中间遇到了一些问题,遂整理如下. 测试环境: 操作系统:  Windows Server Standard 2012 数据库版本:  SQL SERVER 2014 1:设置共享路径权限 这一步很简单,也非常好理解.共享路径需要给某些特定用户才能访问,例如某个域账号.在此略过. 2:映射网络驱动器. 映射网络驱动

android数据库版本升级总结

前序: Android版本升级同时Sqlite数据库的升级及之前数据的保留 原理分析: 在android应用程序需要升级时,如果之前的数据库表结构发生了变化或者新添加了表,就需要对数据库进行升级,并保留原来的数据库数据. 程序如何知道数据库需要升级? SQLiteOpenHelper类的构造函数有一个参数是int version,它的意思就是指数据库版本号.比如在软件1.0版本中,我们使用SQLiteOpenHelper访问数据库时,该参数为1,那么数据库版本号1就会写在我们的数据库中. 到了1

Elasticsearch 集群版本升级步骤及注意事项

Elasticsearch 自从1.0.7版本之后,集群各节点的滚动式升级已不需要重启集群,相比之前的升级模式来看,可以非常平滑的渡过升级过程.这里将叙述集群滚动式升级及其注意事项. 1.升级前的准备工作 从Elasticsearch 的官方网站 https://www.elastic.co/downloads/elasticsearch 下载最新版本的Elasticsearch,为了线上方便对数据包的管理,一版选择 .gz.tar 格式或者 .zip 格式文件. 解压缩最新版本文件压缩包到指定