SQL2005 EXPRESS自动备份
- 格式:doc
- 大小:90.00 KB
- 文档页数:4
通过SQL Server2005数据库复制实现自动备份By wumeilei复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。
使用复制技术,用户可以将一份数据发布到多台服务器上,复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性,间接实现数据库同步备份。
SQL SERVER提供了三种复制类型:快照复制、事务复制、合并复制。
快照复制指在某一时刻给出版数据库中的出版数据照相,然后将数据复制到订阅者服务器。
快照复制是将整个数据集发送给订阅服务器,由于体积大而造成复制周期较长,会形成复制滞后问题。
事务复制使用事务日志来生成将复制到订阅服务器的事务,因为它只复制事务也就是变化,所以滞后也比快照复制低得多。
下面以事务复制为例进行描述。
测试发布服务器:LIUJICHE-7F6D04测试分发服务器:LIUJICHE-7F6D04测试订阅服务器:34CB3FFA485C4FF一、建立发布(在LIUJICHE-7F6D04机器操作)在发布前请确保SQL SERVER代理已经启动、发布数据库的日志是完整模式。
以SA用户登录发布服务器SQL Server。
在左侧树结构中找到【复制】——>【本地发布】节点,点击右键,选择【新建发布】,如下图:弹出如下窗口:点击【下一步】,选择需要复制的数据库,如“acctrue_T_Code”:点击【下一步】,选择“事务性发布”:点击【下一步】,选择需要复制的数据库表,如“CodeContentItem”点击【下一步】,不需要筛选:点击【下一步】,选择“立即创建快照并使快照保持可用状态,以初始化订阅”和“计划在以下时间运行快照代理”。
然后点击【更改】按钮,调整复制时间计划,根据需要进行定义,此次以1分钟间隔为例。
更改后如下图:点击【下一步】:点击【安全设置】按钮,按照下图所示进行选择:设置完成后如下图:点击【下一步】:点击【下一步】,输入发布名称,如“abc”:点击【完成】按钮,系统将创建发布,提示成功后创建发布完成。
Sql2005通过脚本进行将备份自动压缩并删除本地备份自动保存在网络上任何一台计算机上。
1.在服务器建立提取压缩包程序,选择环境变量选择Path项并在后面添加rar程序地址%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\WinRAR2、在网络中要储存数据库的计算机上建立共享文件夹3、在服务器上建立一个放置数据库的文件夹,例如:文件夹名为DBBACK4、启动sql2005的xpcmdshell服务5、新建一个作业计划---计划—新建,选择自动备份时间6、计划—选择步骤--新建将一下代码复制进去BACKUPDA TABASE[PACS]TO DISK = N'Q:\backup\data\PACS_backup.bak' BACKUPDA TABASE[ris]TO DISK = N'Q:\backup\data\ris_backup.bak'然后选择高级—选择--然后继续添加新建步骤讲下面代码复制进去,此步骤意思是进行数据库自动备份并进行压缩发送到'\\192.168.235.88\数据库备份'目录下。
并在本地留下备份。
declare @cmdstr varchar(1000),@filename varchar(255)set @filename='D:\235.210-'+cast(month(getdate())as varchar(10))+'.'+cast(day(getdate())as varchar(10))+'.rar 'set @cmdstr='rar a '+ @filename +' E:\DBBACK'exec xp_cmdshell @cmdstrgodeclare @cmdstr varchar(1000),@filename varchar(255),@filepath varchar(255)set @filepath='\\192.168.235.88\数据库备份'set @cmdstr='net use /d '+ @filepath + '/y'exec xp_cmdshell @cmdstrgodeclare @cmdstr varchar(1000),@filename varchar(255),@filepath varchar(255)set @filepath='\\192.168.235.88\数据库备份'set @cmdstr='net use '+ @filepath +' /user:erp\erpdbback 3838438'exec xp_cmdshell @cmdstrgodeclare @cmdstr varchar(1000),@filename varchar(255),@filepath varchar(255)set @filepath='\\192.168.235.88\数据库备份\'+convert(varchar(6),getdate(),112)+ '\' + convert(varchar(8),getdate(),112)set @cmdstr='md '+ @filepathexec xp_cmdshell @cmdstrgodeclare @cmdstr varchar(1000),@filename varchar(255),@filepath varchar(255)set @filename='D:\235.210-'+cast(month(getdate())as varchar(10))+'.'+cast(day(getdate())as varchar(10))+'.rar 'set @filepath='\\192.168.235.88\数据库备份\'+convert(varchar(6),getdate(),112)+ '\' + convert(varchar(8),getdate(),112)set @cmdstr='copy '+ @filename + @filepath +'\'exec xp_cmdshell @cmdstrgodeclare @cmdstr varchar(1000),@filename varchar(255)set @filename='D:\235.210-'+cast(month(getdate())as varchar(10))+'.'+cast(day(getdate())as varchar(10))+'.rar 'set @cmdstr='del '+ @filenameexec xp_cmdshell @cmdstrgodeclare @cmdstr varchar(1000),@filename varchar(255),@filepath varchar(255)set @filepath='\\192.168.235.88\数据库备份'set @cmdstr='net use /d '+ @filepath +' /y'exec xp_cmdshell @cmdstrgo7、继续新建步骤讲下面代码复制进去,意思是讲本地备份数据库进行删除。
--Full BackUp--Use MasterCREATE proc [dbo].[bakup_DataBase]asDeclare @strPsw varchar(50)Declare @strUsr varchar(50)Declare @strCmdShell varchar(300)Declare @strDataBaseName varchar(20)Declare @FullFileName Varchar(200)Declare @FileFlag varchar(50)Declare @ToFileName varchar(200)Declare @SQLStr varchar(500)Declare @SQLStr2 varchar(500)Declare @FlagDel varchar(20)Set@FileFlag=replace(replace(convert(char(20),getdate(),20),':','') ,' ','-') --备份的文件命名规则:日期-时间.bakSet @strUsr='SOFMTI_TD\administrator' --需填写域名\用户名(目标机器的Windows 登陆名) Set @strPsw='sofmit'--需填写Windows 登陆密码(如:Soondy)Set @strCmdShell= 'net use \\192.168.0.22\c$ ' + @strPsw + ' /user:' +@strUsr --需填写IP(目标机器的IP 地址,如:192.168.2.178)Set @strDataBaseName='LilianDB'--填写数据库名称(如:Soondy)Set @FullFileName='E:\SqlServer自动备份文件\'+'LilianDB_backup_'+@FileFlag+'.BAK'--需填写本地备份临时文件的目录,因为需要先备份到本地再copy 到目标机器(如:保存目录为E:\SoondyTest\)Set @ToFileName='\\192.168.0.22\D$\OneCardBak\' --需填写IP(目标机器的IP 地址)以及保存的目录(如:\\192.168.2.178\c$\Test\)Set @FlagDel='False'--填写True 表示删除本地的备份临时文件,填写False 或其他字符表示保留该文件Set @SQLStr='copy '+@FullFileName+' '+@ToFileNameSet @SQLStr2='del ' +@FullFileNameBackUp DataBase @strDataBaseName To Disk= @FullFileName with initexec master..xp_cmdshell @strCmdShell--尝试连接到目标机器exec Master..xp_cmdshell @SQLStr --拷贝到目标机器上if (@FlagDel ='True') exec master.. xp_cmdshell @SQLStr2--删除本地的备份临时文件。
SQL2005数据库自身备份功能特性简介
数据库镜像是SQL Server 2005的一个新特性,它允许你将一个SQL Server中的数据库内容镜像到另一个SQL Server上。
在发生错误的时候,通过镜像数据库来进行错误恢复。
数据库镜像的工作方式及特点:
通过基本服务器(主)和镜像服务器(从)实现,两边必须都装有SQL2005。
当事务写入你的基本服务器的时候,他们也同样被传送到并写入你的镜像数据库中。
除了基本和镜像之外,还有可选的“证人”服务器。
它是在判断什么时候进行错误恢复的时候,用于基本和镜像之间内部交流。
当错误发生,并因此需要进行错误恢复的时候,证人服务器便发挥它的效用。
高可用性:两台服务器上同步事务写入,并支持自动错误恢复。
要使用这个选项,必须还要使用一个证人服务器。
高保护:两台服务器上同步事物写入,手工回复错误,无证人服务器。
高性能:不关心两台服务器上的写入是否是同步的,只关心性能。
只能假设镜像服务器上的所有事情都是成功完成。
只允许手工的错误恢复,无证人服务器。
较数据库保镖的缺点:
1:做不到热备份,备份数据不能直接用,需进行数据回复
2:增加“证人”服务器,硬件成本高。
SQL自动备份以及还原操作方法SQL自动备份(数据库维护计划)操作步骤:1、打开企业管理器→打开“管理”→启动‘SQL Server 代理’→选择‘数据库维护计划’。
2、右键‘数据库维护计划’→新建维护计划3、选择需要备份的数据库,只需要勾选要备份的数据库即可;4、数据优化信息设置,数据库存在预留空间,使用此设置在备份时我们可以将预留的空间删除,避免空间浪费;执行此操作时间可以在调度里更改(如红圈2),图示:此操作在每周的星期日1:00:00执行;,用户根据自己的需要“更改”时间;红圈25、关于数据优化、数据库完整性检查、数据库备份里的调度说明:具体的设置用户可以根据需要进行详细设置;建议把周期设置短一点,在数据恢复时可以恢复到最近时间段,避免大范围损失6、数据库完整性检查设置:此设置是防止软硬件出问题导致备份出现差异而进行检查;执行时间也是在调离里设置;7、设置数据库存放方式、备份时间(调度设置备份周期);8、选择数据库备份存放路径、以及自动删除早期备份文件、删除周期,避免忘记手动删除导致磁盘空间浪费;9、报表、历史记录均可以不用设置,如有需要用户可以自行设置;10、填写备份计划名称;11、备份计划完成,注意保持SQL Server 代理是一直运行着的;SQL备份数据库还原关于数据库的还原。
⑴.找到备份文件夹,找到需要还原的数据库*.bak;⑵.在SQL 2000企业管理器里,在你要还原的数据库(如果无数据库可新建空数据库)上点右键----所有任务---还原数据库;(3)弹出还原数据库对话框,选择从设备,点击选择设备----添加----找到要还原的数据库文件----确定----确定,在选项框选择在现有数据库上强制还原,然后点确定即可还原。
详细步骤:1、点开始‘程序’里面打开“SQL SERVER”的企业管理器,打开数据库,右击“数据库”打开所有任务里面“还原数据库”。
如下图:2、弹出下面窗口、命名自己要还原的数据库名字,点击“从设备”出现以下界面:3、选择“选择设备”4、找到备份文件夹的路径,选择需要还原的备份数据库,备份文件数据库后缀为.BAK;5、从设备选择好好备份文件后,确定进行数据库还原;6、还原好后在计费系统服务端文件夹内使用ado.udl对数据库进行链接;另:注意:如果要在原有数据库的基础上还原备份数据库,需要在选项卡里勾选上在现有数据库上强制还原,(为防止数据出现错误,建议新建空数据库);如图:简单步骤:开始→所有程序→Microsoft SQL Server→企业管理器→SQL Server 组→(local)(Windows NT) →数据库→选择已有数据库→右键‘所有任务‘→还原数据库;。
Sql2005自动备份并邮件通知状态之三设置邮件通知
2010-09-20 17:34
Sql2005自动备份并邮件通知状态之三设置邮件通知
本章节为最后一章节,介绍如何创建代理操作员和设置备份的邮件通知
创建操作员和设置邮件通知
单击创建操作员,
输入操作员名称和邮件地址单击确定即可.
下面我们可以看到代理作业里面产生了一个以数据库维护计划为前缀的子代理作业,我们编辑它即可
右键单击作业,选择属性
切换到通知选项卡,选择邮件通知,当作业成功时通一般来说作业不会失败,所以我们都能收到邮件,如果没有收到邮件我们就应该检查邮件服务器是否当机,数据库是否备份成功
然后保存一下设置
OK,等到22:10后数据库开始备份,备份时间为1分半
钟,╮(╯_╰)╭,testdb是个空数据库来的也要1分半,所以大家第一次要测试一下,备份库要多久,这样就能知道大约什么时间能收到备份成功的信,信是备份成功才会收到的.
这里我们删除数据库
看没有数据库了
我们再手工执行以下维护任务
失败了
也没有邮件通知了
可以看下这里sqlmail就是sql2000上的用outlook去配置邮件的方式.
如有侵权请联系告知删除,感谢你们的配合!。
问题提出当越来越多的多商业应用采用SQl Server 2005 Express版本作为后台数据库的时候,我们必须确保能顺利的备份系统以及运行在实例上的用户数据库。
不幸的是,SQl Server 2005 Express 版本没有SQL代理,也就不能使用SQL代理来创建可以备份所有数据库的数据库维护计划。
那么对于SQl Server 2005 Express 版本,我们如何像其它版本一样来备份系统和数据呢?专家解答我们可以通过Windows中的任务管理,结合VBSript和TSQL来达到在SQl Server 2005 Express 版本中自动备份系统和数据的目的。
注意:所有的文件都必须保存在如下文件夹:E:\SQL_Backup\scripts。
这个目录可以改变。
但在该例中设定的是这个目录。
如果将文件保存到其它目录,必须相应的更新脚本中的目录设置。
第一步-创建TSQL脚本以下的TSQL脚本将生成一个数据库备份文件,同时考虑到生成的日期和时间,其格式类似于数据库维护计划生成的备份文件。
我们将之保存为后缀名.sql 的文件:E:\SQL_Backup\scripts\backupDB.sql。
该文件将在批处理命令文件中使用sqlcmd调用。
DECLARE @dateString CHAR(12), @dayStr CHAR(2), @monthStr CHAR(2), @ho urStr CHAR(2), @minStr CHAR(2)--month variableIF (SELECT LEN(CAST(MONTH(GETDATE()) AS CHAR(2))))=2SET @monthSTR=CAST(MONTH(GETDATE()) AS CHAR(2))ELSESET @monthSTR= '0' + CAST(MONTH(GETDATE()) AS CHAR(2))--day variableIF (SELECT LEN(CAST(DAY(GETDATE()) AS CHAR(2))))=2SET @daySTR=CAST(DAY(GETDATE()) AS CHAR(2))ELSESET @daySTR='0' + CAST(DAY(GETDATE()) AS CHAR(2))--hour variableIF (SELECT LEN(DATEPART(hh, GETDATE())))=2SET @hourStr=CAST(DATEPART(hh, GETDATE()) AS CHAR(2))ELSESET @hourStr= '0' + CAST(DATEPART(hh, GETDATE()) AS CHAR(2))--minute variableIF (SELECT LEN(DATEPART(mi, GETDATE())))=2SET @minStr=CAST(DATEPART(mi, GETDATE()) AS CHAR(2))ELSESET @minStr= '0' + CAST(DATEPART(mi, GETDATE()) AS CHAR(2))--name variable based on time stampSET @dateString=CAST(YEAR(GETDATE()) AS CHAR(4)) + @monthStr + @daySt r + @hourStr + @minStr--================================================================= DECLARE @IDENT INT, @sql VARCHAR(1000), @DBNAME VARCHAR(200)SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND NAME NOT IN ('TEMPDB')WHILE @IDENT IS NOT NULLBEGINSELECT @DBNAME = NAME FROM SYS.DATABASES WHERE database_id = @IDENT /*Change disk location here as required*/SELECT @SQL = 'BACKUP DATABASE '+@DBNAME+' TO DISK = ''E:\SQL_Backup\ '+@DBNAME+'_db_' + @dateString +'.BAK'' WITH INIT'EXEC (@SQL)SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND database_id>@IDENT AND NAME NOT IN ('TEMPDB')END第二步-创建VBSript文件接下来我们需要创建一个VBSript文件,它将负责清理旧的数据库备份文件。
SQLserver2005数据库的还原与备份
⼀、SQL数据库的备份:
1、依次打开开始菜单→程序→ Microsoft SQL Server 2005→SQL Server Management Studio ,这⾥我以UMVTEST命名的数据库来教⼤家备份功能:
2、选择要备份的数据库“UMVTEST”,点击⿏标右键→任务→备份,如图:
⼆、SQL数据库的还原:
1、选择您要还原的数据库“UMVTEST”,点击⿏标右键→任务→还原→数据库,如图:
2、在出现的“还原数据库 —UMVTEST”对话框中选择“源设备”,然后点击后⾯的“…”按钮,如图:
3、在出现的“指定备份”对话框中,点击“添加”按钮,如图:
4、找到数据库备份的路径,选择您所要还原的数据库(注意:⽂件类型选择所有⽂件),然后连续“两次”点击“确定”按钮,如图:
5、在出现的“还原数据库 —UMVTEST”对话框中,勾选上“选择⽤户还原的备份集”下的数据库前的复选框,如图:
6、然后选择“选项”,勾选上“覆盖现有数据库”,如图:
最后按确定就完成了数据库的还原。
三、还原数据库问题解决⽅案
在还原数据库时,有时会遇见问题“因为数据库正在使⽤,所以⽆法获得对数据库的独占访问权”,此时我们可以按照以下步骤解决此问题1、右键数据库“Dsideal_school_db”,然后选择“属性”,如下图:
2、在出现的“数据库属性”对话框中,选择“选项”,在“其他选项”下的“状态”中找到“限制访问”。
选择“SINGLE_USER”,点击“确定”按钮,如下图:
3、按照正常还原数据库的步骤,还原数据库。
Sqlserver2000 设置方法
1 打开企业管理器
2 选择要备份的数据库,右键—》维护计划
这里可以选择“更改”设置调度时间,即工作频率
这里最好选择每天都备份,备份的时间选择在晚上访问量少的时间段。
备份文件的路径可以选择默认。
也可以自己配置一个路径;为每个数据库创建子目录,可选,可不选;
删除早期文件,可选可不选
3 完成上面的步骤之后,找到管理—》SQL Server 代理—》作业就会看到右边的作业,
Sqlserver2005
打开企业管理器:管理—》维护计划
右键- 维护计划向导【也可以新键维护计划,然后在设置】
这里选择数据库备份任务,可以选择差异备份,也可以选择完全备份;如果是选择差异备份,记得每次备份都不能丢掉,如果是完全备份你可以随便撒呀了,只要最后一次备份存在。
下一步–》下一步
选择数据库---》
这里选择每天都做备份
完成之后,在管理—》维护计划里会显示刚添加的计划;在作业里会出现相同名称的作业任务。
到设置的时间点,系统会自动备份数据库,生成如下文件【*.bak】
修改设计或者查看设置信息
在作业-→选中作业名称,双击或者右键找到属性,可以打开上面添加的维护计划。
如下
选中→常规、步骤、计划都可以弹出来具体的设置信息,也可以重新编辑。
SQL SERVER 2005自动备份数据库和删除备份SQL SERVER 2005里自动备份数据库和删除旧有备份的办法打开SQL SERVER MANAGEMENT STUDIO,启动SQL SERVER代理服务(注意在“控制面板-管理工具-服务”中设置SQL SERVER AGENT的启动类型为自动)。
启动后点击“作业-新建作业”,弹出一个作业属性的窗口,在“常规”栏目打开SQL SERVER MANAGEMENT STUDIO,启动SQL SERVER代理服务(注意在“控制面板-管理工具-服务”中设置SQL SERVER AGENT的启动类型为自动)。
启动后点击“作业-新建作业”,弹出一个作业属性的窗口,在“常规”栏目里可以先给作业命名,假设为“备份数据”。
一、备份数据的第一个步骤--“备份当日数据”在“步骤”栏目里新建一个步骤名为“备份当日数据”,类型为“T-SQL”,数据库选择你要操作的数据库(假设为“TESTDB”),命令窗口里填入备份的SQL语句。
假设备份数据放在“D:\BACKUP”里,备份文件命名格式为“SQL-2009-3-26.BAK”,那么语句如下:DECLARE @filename V ARCHAR(255)DECLARE @date DATETIMESELECT @date=GETDA TE()SELECT @filename = 'D:\BACKUP\SQL-'+CAST(DATEPART(yyyy,@date) as varchar)+'-'+CAST(DATEPART(mm,@date) as varchar)+'-'+CAST(DA TEPART(dd,@date) as varchar)+'.bak'BACKUP DATABASE [TESTDB] TO DISK = @filename WITH INITGO在步骤属性的高级的“成功时要执行的操作”选择“转到下一步”即可,这样“备份当日数据”的步骤已经建立好。
SQL 2005 EXPRESS 自动备份
2010-05-13 11:03:49
标签:SQL自动EXPRESS
最近由于换了新的工作,公司用了SQL 2005 EXPRESS ,可是没法实现数据的维护计划,对于不断增多急需做自动备份的工作十分头痛,在网上不断的找资料,都解释的不是很全,接下来,我整理给大家看下,因为我刚才已经TEST成功了,希望对大家有帮助,我可量百度SEACH了一天时间才弄出来
方法如下
1 首先用SQL Server Management Studio Express 登录到实例中
展开数据库,新建存储过程
复制如下语句到到右边
USE master
GO
CREATE PROC p
@db_name sysname, --数据库名
@bk_path NVARCHAR(1024) --备份文件的路径
AS
IF ISNULL(@db_name,'')=''
SET @db_name=db_name() ;
DECLARE @dt VARCHAR(50) ;
SET @dt=@db_name+'_'+CONVERT(VARCHAR(8) , GETDATE() ,112)+'_';
SET @dt=@dt+REPLACE(CONVERT(VARCHAR(10) ,GETDATE() ,108),':','') IF RIGHT(@bk_path,1)<>'\'
SET @bk_path=@bk_path+'\';
EXEC ('BACKUP DATABASE ['+@db_name+'] TO DISK='''+@bk_path+@dt+'.bak'' WITH FORMAT');
GO
根据实际数据库做修改
第二步
在某个文件夹里建两个txt文件--如D:\batComand.txt跟D:\BackupDatabase.txt
--然后batCommand.txt文件内容如下:
sqlcmd -S TAIXIN-PC-11\SQLEXPRESS -E -i D:\BackupDatabase.sql
上面这条语句TAIXIN-PC-11\SQLEXPRESS是计算机名\实例名
然后保存.将扩展名改为.bat
然后BackupDatabase.txt文件内容如下:
USE master
GO
EXEC p '要备份的数据库名','备份路径'
然后保存,将扩展名改为.sql
--第三步
新建任务计划.然后在选择执行哪个任务的时候..单击浏览..选择D:\batCommand.bat
设置每天执行..即可.
备份时的文件名是:数据库名_日期_时间.bak
最新经验补充,经过一段时间的备份,会发现日志文件不断增加,原因是除了日志备份,在完整备份模式下,其他备份不会截断日志。
采用的方法:
一、将数据库备份模式更改为简单备份模式,此模式下将不保留日志。
(简单但不灵活)
二、进行完全备之后再进行日志备份。
到这里时,大家发现有登录超过时的错误,其实还要设置一个地方,那就是SQL TCP/IP协议
1、开启网络协议
SQL Server Configuration Manager -> 网络配置-> 协议
TCP/IP属性
保持活动状态--> 30000
全部侦听--> 否
无延迟--> 否
已启用--> 是
IP地址
IP地址--> 数据库服务器IP
TCP动态端口--> 不填
TCP端口--> 1433
活动--> 是
已启用--> 是
注意,所做的修改都是得重启SQL服务才会生效,到这里应该差不多了!。