Server自动备份存储进度和视图的点子,定时作业的安装格局

1 建立备份数据表

997755.com澳门葡京 1997755.com澳门葡京 2

CREATE TABLE [dbo].[ProcBackup](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [name] [sysname] NOT NULL,
    [db] [nvarchar](50) NULL,
    [obj_id] [int] NULL,
    [create_date] [datetime] NOT NULL,
    [modify_date] [datetime] NOT NULL,
    [text] [nvarchar](4000) NULL,
    [type] [nvarchar](5) NULL,
    [remark] [nvarchar](500) NULL,
    [backup_date] [datetime] NULL
) ON [PRIMARY]

GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'自增ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'id'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'名称' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'name'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'所在数据库' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'db'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'系统对象id' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'obj_id'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'创建时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'create_date'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'修改时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'modify_date'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'内容' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'text'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'类型' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'type'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'备注' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'remark'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'记录时间' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'ProcBackup', @level2type=N'COLUMN',@level2name=N'backup_date'
GO

ProcBackup

YourSQLDba的翻译(六)

在运行上边那几个蕴藏进度此前,先配备好YourSQLDba,执行YourSQLDba_InstallOrUpdateScript.sql.
脚本。然后运行下边的贮存进程进行计划您的YourSQLDba

以此蕴藏进程在SQLSERVER
代理里成立三个义务,这一个义务的叙述都富含在Maint.YourSQLDba_DoMaint存储进度里
职分一:在早晨执行YourSQLDba_FullBackups_And_Maintenance
作业,那些作业的用途是实践每一日维护包含总体备份数据库
义务二:每15秒钟执行YourSQLDba_LogBackups
作业,这几个作业的用处是备份工作日志

YourSQLDba创立一个数据库邮件profile 命名为YourSQLDba_EmailProfile
其一profile里有一个帐户:名为<servername>.<instanceName>@YourSQLDba.com

    <servername> 是你的服务器的电脑名.
    <instanceName> 是你的SQLSERVER实例名字

YourSQLDba还会创立一个SQLSERVER代理操作员,命名为YourSQLDba_Operator
,那几个操作员包涵了@email参数

YourSQLDba会配置警报依据你布署的数据库邮件,发送警报到您的邮件地址
YourSQLDba会改变SQLSERVER实例默许的SQL
ERRORLOG的多寡,默许唯有7个,那样就可以有更长的ERRORLOG历史足以追查

 

Initial setup
  

Updated : 2010-10-06

Before to run it, deployed YourSQLDba solution by running the script
YourSQLDba_InstallOrUpdateScript.sql.

Then run this procedure from YourSQLDba database.

Sample :

 1 Exec YourSQLDba.Install.InitialSetupOfYourSQLDba 
 2   @FullBackupPath = 'c:\iSql2005Backups'       -- full backup path destination 
 3 , @LogBackupPath = 'c:\iSql2005Backups'   -- log backup path destination 
 4 , @email = 'myAdmin@myDomain.com'              -- Email recipients (or distribution list) 
 5 , @SmtpMailServer = 'myMailServer'             -- Mail server that accept SMTP mail 
 6 
 7 , @ConsecutiveFailedbackupsDaysToPutDbOffline = 0000 
 8                            -- Maximum number of consecutive days of failed full backups allowed 
 9                            -- for a database before putting that database (Offline). 
10                            -- You must choose a value between 4 and 9999. 
11        -- Important: Your can read the explanations in the InitialSetupOfYourSQLDba page 
12        --            for using the @ConsecutiveFailedbackupsDaysToPutDbOffline parameter. 

 

Click here to get the full description of the call to the procedure
“Install.InitialSetupOfYourSQLDba”.

The procedure create two tasks in SQL Server Agent that invokes the
Maint.YourSQLDba_DoMaint procedure. 

At midnight : YourSQLDba_FullBackups_And_Maintenance : Perform
daily maintenance including full backups of name :
Every 15 minutes around the clock : YourSQLDba_LogBackups : Does log
backups
It creates a database mail profile named YourSQLDba_EmailProfile
which contains a account named as

    <servername>.<instanceName>@YourSQLDba.com

    <servername> is the name of the server.
    <instanceName> is the name of the instance if it is not the
instance by default.

It creates an SQL Server Agent operator named YourSQLDba_Operator
which contains the value of the @email parameter.

It configures SQL Server Agent alert system to have
YourSQLDba_EmailProfile.

It modifies log archive number limit on SQL Server instance, so it is
possible to have a longer SQL Server Error logs history

 

YourSQLDba的翻译(四)

 

YourSQLDba的各样东西都存储在一个叫 “YourSQLDba”的数据库里

Server自动备份存储进度和视图的点子,定时作业的安装格局。概括:存储进程,内部表(日志,跟踪音信)

YourSQLDba使用SQLSERVER 代理来运作维护作业

有多个作业在创立的时候使用同一的囤积进程只是使用差别的参数

一个是每一天维护义务(完整性检查 dbcc
checkdb,更新计算消息,重组或重建索引,完整备份)
一个是日记备份

当数据库事务日志当先给定的临界值的时候,备份工作日志会重设日志大小

数据库邮件能布告操作员或DBA或领导

How it does it ?
  

Updated : 2009-02-25

Everything is stored in a database named YourSQLDba
Stored procedures
Internal table (logs, and informational tracking info)
It uses SQL Server Agent to run maintenance job
Two job are created that use the same procedure with different
parameters
One for daily maintenance (integrity test, update statistics,
reorganize or rebuild, full backups)
One for log backups
Job backups reset log size that grow beyond a given threshold
It communicates to operator or Dba or whatever else is responsible
(SQL Agent operator) through database mail

比方在SQL Server
里要求定时或者每隔一段时间执行某个存储进程或3200字符以内的SQL语句时,可以用管理-SQL
Server代理-作业来已毕

2 创设存储进程

997755.com澳门葡京 3997755.com澳门葡京 4

create proc proc_backup
as
--插入新增的存储过程
insert into ProcBackup 
select A.name,'db_' as db,A.[object_id] as obj_id,A.create_date,A.modify_date,C.[text],'P' as type,'' as remark,getdate() as backup_date from sys.procedures A 
left join sys.syscomments C on A.[object_id] = C.id 
where A.name not in (select name from ProcBackup) 

--插入修改过的存储过程
insert into ProcBackup 
select A.name,'db_' as db,A.[object_id] as obj_id,A.create_date,A.modify_date,C.[text],'P' as type,'' as remark,getdate() as backup_date from sys.procedures A 
left join ProcBackup B on A.[object_id] = B.obj_id 
left join sys.syscomments C on A.[object_id] = C.id 
where A.modify_date > B.modify_date

--插入新增的视图
insert into ProcBackup 
select A.name,'db_' as db,A.[object_id] as obj_id,A.create_date,A.modify_date,C.[text],'V' as type,'' as remark,getdate() as backup_date from sys.views A 
left join sys.syscomments C on A.[object_id] = C.id 
where A.name not in (select name from ProcBackup) 

--插入修改过的视图
insert into ProcBackup 
select A.name,'db_' as db,A.[object_id] as obj_id,A.create_date,A.modify_date,C.[text],'V' as type,'' as remark,getdate() as backup_date from sys.views A 
left join ProcBackup B on A.[object_id] = B.obj_id 
left join sys.syscomments C on A.[object_id] = C.id 
where A.modify_date > B.modify_date

proc_backup

997755.com澳门葡京 5

3 创建SQL Server 代理 作业

在SQL Server代理中创设作业,设置为定时执行存储进度proc_backup即可。

 

 

1、管理-SQL Server代理-作业(按鼠标右键)-
新建作业

2、新建作业属性(常规)-名称[自定义本次作业的名号]-启用的四方内是勾号-分类处可接纳也可用默认的[未分类(本地)]-所有者默许为记名SQL Server用户[也可选其余的报到]-描述[填写这一次工作详细描述内容];

997755.com澳门葡京 6

 

 

3、新建作业属性(步骤)-新建-步骤名[自定义第一步骤名称]-类型[Transact-SQL(TSQL)脚本]-数据库[要操作的数据库]-命令 [
即使是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的.sql。文件如若要履行存储进度,填 exec p_procedure_name
v_parameter1,[
v_parameter2…v_parameterN]
-确定 (若是有五个步骤,可以重复调用上面的新建按钮;也得以对已有些三个步骤插入、、删除997755.com澳门葡京 7);

997755.com澳门葡京 8

 

4、建作业属性(调度)-新建调度-名称[自定义调度名称]-启用的四方内是勾号-调度-反复现身-
更改[调度时间表]-确定(如若一旦保存此作业,不要定时做可以把启用的四方内是勾号去掉);

997755.com澳门葡京 9

 

5、建作业属性(布告)-用默许的通告方法就好[当作业失利时,写入Windows应用程序系统日志]
-确定。

 

 

跟作业执行相关的一些SQL Server知识:

SQL Server
Agent服务必须正常运作,启动它的NT登录用户要跟启动SQL
Server数据库的NT登录用户同样;

点作业右键可以查看作业执行的历史记录情形,也得以登时启动作业和终止作业。

新近在看作业历史记录时,发现一些作业记录的历史记录多,有的作业记录的记录的历史记录少。怎么着能使某些作业按各自的须求,保留一段时间.比如保留一个月的历史记录.看了SQL
Server的在线支持文档,里面介绍说:

在管制-SQL
Server代理-右键选属性-作业系统-限制作业历史记录日志的轻重

学业历史记录日志的最大尺寸(行数) ,默许为1000
。假若某台机械的作业数量很多,一定要增强它,例如为100000

每个作业历史记录日志的最大行数,默许为100。如果作业每一日实施五遍,须要保留一个月的日记,可以设为60

它们中间有一个互动制约关系,
大家得以按照自己的内需来改.

如果SQL
Server服务器改过机器名,管理是旧名称时确立的job的时候恐怕会际遇。错误14274: 无法添加、更新或删除从MSX服务器上发起的课业(或其步骤或调度)。看了Microsoft的文档:http://support.microsoft.com/default.aspx?scid=kb;en-us;281642说SQL Server 2000连串里msdb..sysjobs 里originating_server
字段里存的是本来的服务器的称呼。24X7在用的系统肯定不可能按上边Microsoft的文档说的那么把名字改回来又改过去。于是想,msdb..sysjobs 能或不能update
originating_server 字段成现在在用的新服务器名?

use msdbselect  from
sysjobs

找到originating_server 字段依然旧服务器的job_id,然后实施update语句:

update sysjobs set
originating_server=‘new_server_name‘where job_id=‘B23BBEBE-A
3C1-4874-A4AB-0E2B7CD01E14‘

(所影响的行数为 1 行)

那般就足以添加、更新或删除那个已经出error 14274 的功课了。

只要想把作业由一台机器迁移到另一台机械,可以先保留好创立作业的剧本,
然后在另一台机器上运行。

导出所有作业的创制脚本操作步骤:

管制-SQL
Server代理-作业(鼠标右键)-所有职分-生成SQL脚本-保存到下的某部sql文件
[Page]

导出某一个学业的创造脚本操作步骤:

管理-SQL
Server代理-作业-选中待转移的学业(鼠标右键)-所有任务-生成SQL脚本-保存到OS下的某个sql文件

接下来在目标服务器上运行刚才保存下去的创始作业的sql脚本。(
如果建作业的用户依然擢升的用户不存在, 则会出错;
我们须要在目的服务器上确立有关的WINDOWS用户如故SQL
Server数据库登录,也可以修改成立作业的台本,把目的服务器上不存在的用户替换成已经有的用户。如果生成日志的情理文件目录不设有,也应当做相关的修改,例如d:\区转f:\区等字符串的 @command 命令里有分隔符号 go 也会出错,可以把它去掉)

 上面来看看哪些按日期定期备份数据库

 寻常备份的方法有二种:手动备份和电动备份,假使数据库服务器中有那样多的数据库必要备份,那么手动备份必定是一个很大的工作量,那么些时候我们得以采用别的一种备份格局—定时自动备份

 

SQLServer的掩护安排之中自带了备份数据库职责,但不会自行按日期命名,不便民,上边的办法是以存储进度来解决的,以sql2000为例:

第一要认同SQL Server Agent服务是在开行状态,

997755.com澳门葡京 10

 

下一步,大家来创建作业,在创制作业以前,大家要求创设备份数据库及命名的贮存进度

譬如是对TestDB操作,打开查询分析器,把下部的存储进程拷到里面实践下就行了,当然了,命名规则可以自行更改

 

997755.com澳门葡京 11997755.com澳门葡京 12View Code

USE [TestDB]    GO  
SET ANSI_NULLS ON   GO  
  SET QUOTED_IDENTIFIER ON   GO  
  CREATE PROCEDURE [BackupDatabase](
@FolderPath varchar(500)) 
   as   DECLARE @FullPath varchar(1000) 
   set @FullPath = @FolderPath+ ‘TestDB_’+convert(VARCHAR(4),year(getdate()))+right( ‘0’+convert(VARCHAR(2),MONTH(getdate())),2)+right(‘0’+convert(VARCHAR(2),DAY(getdate())),2)+ ‘.bak’   backup database [TestDB] to disk=@FullPath WITH INIT   
 return 

997755.com澳门葡京 13

 

这么就创设了一个BackupDatabase的积存进程。

上边来成立作业吧。

例行里添加称呼,拔取下分类就行了,

上面的步调很重点。

997755.com澳门葡京 14

 

添加步骤的时候,有点很首要,就是实践方才我们成立的蕴藏进度如图

997755.com澳门葡京 ,use [TestDB]   

exec BackupDatabase ‘E:\SqlData\TestDB\’ 

最终设置下活动备份的小时,也就是调度下即可

 

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website