数据库备份方案(精选五篇)

第一篇:数据库备份方案

       1、完全备份(Full Backup)

       备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件。在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份。换言之,清除存档属性。

       完全备份就是指对某一个时间点上的所有数据或应用进行的一个完全拷贝。实际应用中就是用一盘磁带对整个系统进行完全备份,包括其中的系统和所有数据。这种备份方式最大的好处就是只要用一盘磁带,就可以恢复丢失的数据。因此大大加快了系统或数据的恢复时间。然而它的不足之处在于,各个全备份磁带中的备份数据存在大量的重复信息;另外,由于每次需要备份的数据量相当大,因此备份所需时间较长。

       2、差异备份(Differential Backup)

       备份自上一次完全备份之后有变化的数据。差异备份过程中,只备份有标记的那些选中的文件和文件夹。它不清除标记,也即备份后不标记为已备份文件。换言之,不清除存档属性。

       差异备份是指在一次全备份后到进行差异备份的这段时间内,对那些增加或者修改文件的备份。在进行恢复时,我们只需对第一次全备份和最后一次差异备份进行恢复。差异备份在避免了另外两种备份策略缺陷的同时,又具备了它们各自的优点。首先,它具有了增量备份需要时间短、节省磁盘空间的优势;其次,它又具有了全备份恢复所需磁带少、恢复时间短的特点。系统管理员只需要两盘磁带,即全备份磁带与灾难发生前一天的差异备份磁带,就可以将系统恢复。

       3、增量备份(Incremental Backup)

       备份自上一次备份(包含完全备份、差异备份、增量备份)之后有变化的数据。增量备份过程中,只备份有标记的选中的文件和文件夹,它清除标记,既:备份后标记文件,换言之,清除存档属性。

       增量备份是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加和者被修改的文件。这就意味着,第一次增量备份的对象是进行全备后所产生的增加和修改的文件;第二次增量备份的对象是进行第一次增量备份后所产生的增加和修改的文件,如此类推。这种备份方式最显著的优点就是:没有重复的备份数据,因此备份的数据量不大,备份所需的时间很短。但增量备份的数据恢复是比较麻烦的。您必须具有上一次全备份和所有增量备份磁带(一旦丢失或损坏其中的一盘磁带,就会造成恢复的失败),并且它们必须沿着从全备份到依次增量备份的时间顺序逐个反推恢复,因此这就极大地延长了恢复时间。

第二篇:Sybase数据库备份方案

       Sybase数据库备份方案

       Sybase数据备份方案,Sybase数据库产品自从1987年问世以来,它的客户机/服务器(client/server)工作模式、分布处理的基础体系结构、完善的安全保密性能、高速快捷的运行方式、多平台跨操作系统的广泛应用等优点,迅速被IT界接受并推广应用。

       我们作为金融业的用户,也在1995年开始使用Sybase10版本。在具体的使用中,发现集中式的数据管理有其优点,就是数据风险范围大为缩小,但是作为Sybase的服务器一端,数据风险比较集中,如何做好数据库的数据备份,成为至关重要的问题。

       在实际应用中,我们总结出了两种全量备份方案:

       一、Sybase数据备份方案之使用Sybase的BackupServer(备份服务器),做Dump备份

       转储数据库(Dumpdatabase),就是为整个数据库(包括数据、表结构、触发器、游标、存储过程、事务日志等)做一次物理备份。转储数据库时,系统自动执行一次checkpoint,即将日志和数据从缓冲区拷贝到硬盘(只拷贝脏页),把已被分配的页(日志和数据)转储到设备。命令格式为:

       dumpdatabase数据库名to设备文件名with参数

       如果备份到硬盘的文件上,可以不预先估算备份文件的大小,只要硬盘有足够的存储空间就可以。如果是备份到dds磁带上,那么就要估算一下备份后的大小,90米的dds磁带压缩存储空间为4G,120米的磁带压缩存储空间为8G,如果数据库的备份文件超过了这个尺寸,就要考虑多文件转储,使用stripe参数。命令格式为:

       dumpdatabase数据库名to设备文件名1 stripeon设备文件名2 stripeon设备文件名3…… with参数 这种数据备份方式是将整个数据库的运行环境完整的复制一份,包括数据库的脏页和碎片,在使用load命令恢复时,只能恢复到同样大小的数据库中(数据和日志的大小都只能和原来完全一致),适用于在每天的日终营业网点下班后的日常备份。优点是数据库完整无误,缺点是不能直接查看备份内容。

       二、Sybase数据备份方案之分数据结构和数据记录做两次备份

       在一般情况下,生产机的数据库都比较庞大,而实验机则相对较小,难以在实验环境中以load命令恢复工作机的内容。所以,在工作实践中,我们摸索出了第二种全量备份方案。

       1、数据结构备份

       在windows平台的SybaseSQLServerManager(数据库管理)平台中选择ServeràGenerateddl则产生整个数据库服务器的所有信息,如果选择databaseàgenerateddl则产生所选定数据库的信息,以master库为例,产生的文件主要包括:config.ddl(配置)、devices.ddl(设备)、database.ddl(数据库)、logins.ddl(用户)、remote.ddl(远程)、cache.ddl(缓冲)、segment.ddl()、group.ddl(用户组)、user.ddl(用户)、default.ddl(确省)、rule.ddl(规则)、udt.ddl、table.ddl(表)、view.ddl(视图)、proc.ddl(存储过程)、triger.ddl(触发器)。

       2、数据记录备份

       将数据库各表以Sybase自代的bcp(bulkcopy)工具的方式导成一定格式的文本文件,命令格式:

       bcp表名out路径名文件名-c-t分隔符-u(用户名)-p(密码)-S(服务器名)如果将一个数据库中的所有表都做一个bcp备份,就需要针对每一个表都做一次bcp,在一般情况下,一个数据库有100多个表,工作量比较大。可以利用数据库中的系统表信息做一个bcp备份脚本。原理是每一个用户表在系统表中都有信息记载,可以通过isql语句查询得到。现举一例说明: 1)、先编辑一个名为mkbcpout.sql的文件,内容如下: select“echobcp'” name “out……………………'

       ” “bcp” name “out./ ”name “.table-c-t'|'-Uuser-Ppassword-SSERVER”fromsysobjectswheretype='U' go 2)、执行isql命令,以此文件作为输入,执行结果输出到另外一个文件里: isql-Uuser-Ppassword-Sserver-Imkbcpout.sql-Obcpout 3)、对bcppout文件稍微修改,增加可执行权限 chmod xbcpout 4)、执行bcpout,导出数据文本./bcpout

       3、数据库恢复

       业务生产机可能为小型机,而实验开发环境的硬件环境为PCserver,安装好winnt或SCOunix下的Sybase服务器后,根据需要创建空间足够大的数据库和tempdb(系统临时数据库),创建数据库用户,并将其更改为此数据库的所有者,要注意两点:1)此数据库允许bcp拷贝,2)此数据库自动清除log。命令格式为:

       1>sp_dboptiondatabasedbname,“selectinto/bulkcopy”,true 2>go 1>sp_dboptiondatabasename,“trunclogonchkpt”,true 2>go 上述两个配置可能与生产机的配置不同。

       然后以新创建的数据库用户登录,导入数据结构,注意要首先导入表结构,然后才是存储过程、触发器等等。命令格式:

       1、isql-Uusername-Ppassword-Itable.ddl-oerror.log.table

       2、isql-Uusername-Ppassword-Iproc.ddl-oerror.log.proc ……

       为了提高bcp导入数据的速度,需要将比较大的表的索引和主键删除,否则的话,每bcp进一条数据,数据库都自动写一条log日志,记载此数据的上一条和下一条记录,确定本记录在此表中的准确位置,一是影响bcp速度,二是数据库的log飞速膨胀。数据库的自动清除log功能只有在一个事务结束后才起作用。准备工作做完后,开始倒入数据记录。使用类似做bcpout的方法做一个bcpin的脚本,然后执行:./bcpin|teeerror.bcpin 使用tee管道输出的目的是让计算机完整记录下倒入过程,自动存入error.bcpin文件中,待倒入结束后,我们只需要检查日志文件,不需要一直紧盯着计算机屏幕。所有工作做完之后,不要忘记重新将删除的主键和索引建上。

       如果有现成的数据库,只需要单纯地导入数据记录,则首先将数据库中所有用户表(也就是所有type=“U”的表)清空,命令格式: 1>truncatetabletablename 2>go 当然最好也是利用做bcpout脚本的做一个truncate脚本,通过执行此脚本将所有用户表清空。然后的数据导入、处理索引和主键的过程与上面类似。

       三、Sybase数据备份方案之利用做bcp备份脚本的方法做数据库碎片整理 Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作,不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从而影响数据库的存储效率和运行速度。具体表现为:业务繁忙时出现死锁(deadlock),数据库的输入/输出资源被大量占用,业务处理速度慢。其解决办法是:

       1、清空数据库中的所有表,命令格式:

       isql-Uusername-Ppassword-Itruncate.sql-oerror.truncate

       2、删除所有表的索引和主键

       isql-Uusername-Ppassword-Idropindex.sql-oerror.dropindex

       3、导入数据./bcpin

       4、添加索引和主键

       isql-Uusername-Ppassword-Iaddindex.sql-oerror.addindex

       5、更新数据库状态

       1>updatestatisticstablename 2>go 上述操作都是针对数据库中的所有用户表进行的,利用做bcp备份脚本的方法做出相应的脚本,使繁琐的数据库维护变得简便易行,还克服了直接使用isql语句操作风险大、没有操作日志的毛病。以上就是对Sybase数据备份方案的简单介绍。

第三篇:oracle数据库自动备份方案

       1.目的

       编写本文档的目的为实现ORACLE数据库的自动备份,为不动产数据增加一份数据安全按保障。

       2.软件环境

       数据库服务器:oracle 11g atabase x64 v11.2.0.4.0 客户端:Oracle client x64 v11.2.0.4.0 注意:数据库服务器和客户端版本必须保持一致,否则会出现无法预知的错误。

       3.实施方案

       3.1.编写数据库自动备份脚本

       脚本内容如下,将文件存储为oraclebackup.bat:

       @echo off echo 删除10天前的备分文件和日志

       forfiles /p “D:oraclebackup” /m *.dmp /d-10 /c “cmd /c del @path” forfiles /p “D:oraclebackup” /m *.log /d-10 /c “cmd /c del @path” echo 正在备份 oracle 数据库,请稍等……

       exp BDCDJ_CP/BDCDJ_CP@10.6.161.70/orcl file=D:/oraclebackup/BDCDJ_CP�te:~0,4%�te:~5,2%�te:~8,2%.dmp log=D:/oraclebackup/BDCDJ_CP�te:~0,4%�te:~5,2%�te:~8,2%.log echo 任务完成!注意:

       1)修改数据库连接用户名、密码、数据库地址和实例名

       2)修改备份文件存储地址,以上脚本存储位置为D:oraclebackup 3.2.新建任务计划

       1)打开任务计划程序

       2)打开创建基本任务,输入任务名称、选择任务执行时间和执行的脚本,完成任务计划创建。

第四篇:数据库备份和恢复方案及步骤(最终版)

       操作系统:GNU/Linux 数据库管理系统:Oracle10g

       一、安装Recovery Catalog 1,用dbca创建一个DATABASE catdb,用于存放recovery catalog data [oracle@localhost ~]$dbca 2,在catdb中创建一个名为rcat_ts的表空间作为用户rman的默认表空间

       [oracle@localhost ~]$sqlplus sys/oracle@catdb as sysdba SQL> create tablespace rcat_ts;SQL> create user rman identified by oracle temporary tablespace temp Default tablespace rcat_ts quota unlimited on rcat_ts;3,授予catlog所有者rman recovery_catalog_owner角色,该角色提供给用户所有查询和维护recovery catalog所必需的权限

       SQL> grant connect,resource,recovery_catalog_owner to rman;4,启动rman,以catalog所有者rman登录

       [oracle@localhost ~]$rman catalog rman/oracle@catdb RMAN> create catalog tablespace rcat_ts;5,用rman同时连接到target数据库、catalog数据库,在新建的recovery catalog中注册target数据库

       [oracle@localhost ~]$rman target sys/oracle@orcl catalog rman/oracle@catdb RMAN> register database;6,察看已在recovery catalog中注册的target数据库

       [oracle@localhost ~]$sqlplus rman/oracle@catdb SQL>select * from db;

       二、配置RMAN

       1,同时连接target数据库和recovery catalog数据库

       [oracle@localhost ~]$rman target sys/oracle@orcl catalog rman/oracle@catdb 2,RMAN> show all(检查配置)

       configure default device type to disk(设置默认的备份的设备为磁盘)

       CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;(设置备份的并行级别)

       configure channel 1 device type disk format '/home/new/backup_%U'(设置备份文件格式)

       configure channel 2 device type disk format '/home/oracle/backup_%U'(设置备份文件格式)

       configure controlfile autobackup on(打开控制文件的自动备份)

       configure controlfile autobackup format for device type disk to '/home/new/ctl_%F'(设置控制文件备份格式)

       三.备份测试

       备份全库

       1,同时连接target数据库和recovery catalog数据库

       [oracle@localhost ~]$rman target sys/oracle@orcl catalog rman/oracle@catdb 2,RMAN> backup database plus archivelog delete input;3,连接target数据库

       [oracle@localhost ~]$sqlplus sys/oracle@orcl as sysdba SQL> conn hr/hr;SQL> select salary from employees where employee_id=157;SQL> update employees set salary =2000 where employee_id=157;SQL> commit;SQL> select salary from employees where employee_id=157;

       四.恢复测试

       复原及恢复全库 1,连接target数据库

       [oracle@localhost ~]$sqlplus sys/oracle@orcl as sysdba 2,把target数据库先关闭,然后启动到mount状态 SQL> shutdown immediate;SQL> startup mount;3,复原及恢复全库

       RMAN> restore database

       channel ORA_DISK_1: restore complete, elapsed time: 00:05:10 RMAN> recover database media recovery complete, elapsed time: 00:00:07

       4,连接target数据库

       [oracle@localhost ~]$sqlplus sys/oracle@orcl as sysdba 5,打开target数据库

       SQL> alter database open;6,查看已录入的事物 SQL> conn hr/hr;SQL> select salary from employees where employee_id=157;

       假设备份了一个表空间users

       恢复表空间:

       rman target rman/rman@test2022 catalog rman/rman@test2022

       sql 'alter tablespace users offline immediate'(使TEST2022的USERS表空间脱机)

       进入test2022

       select tablespace_name,status from dba_tablespaces;(检查USERS已经脱机)

       退出RMAN

       删除D:oracleoradataTEST2022users01.dbf

       rman target rman/rman@test2022 catalog rman/rman@test2022

       restore tablespace users

       recover tablespace users

       sql 'alter tablespace users online'(使TEST2022的USERS表空间在线)

       进入test2022

       select tablespace_name,status from dba_tablespaces;(检查USERS已经在线)

       三、物理(热)备份。

       Linux 下Oracle10.2.0.1 RMAN备份及恢复步骤介绍

       切换服务器归档模式,如果已经是归档模式可跳过此步:

       %sqlplus /nolog(启动sqlplus)

       SQL> conn / as sysdba(以DBA身份连接数据库)

       SQL> shutdown immediate;(立即关闭数据库)

       SQL> startup mount(启动实例并加载数据库,但不打开)

       SQL> alter database archivelog;(更改数据库为归档模式)

       SQL> alter database open;(打开数据库)

       SQL> alter system archive log start;(启用自动归档)

       SQL> exit(退出)

       2、连接:

       %rman target='gti/gti123@LANDF';(启动恢复管理器)

       3、基本设置:

       RMAN> configure default device type to disk;(设置默认的备份设备为磁盘)

       RMAN> configure device type disk parallelism 2;(设置备份的并行级别,通道数)RMAN> RMAN>

       RMAN> configure controlfile autobackup on;(打开控制文件与服务器参数文件的自动备份)

       RMAN> configure controlfile autobackup format for device type disk to ' /home/oracle/backup/data/ctl_%F';(设置控制文件与服务器参数文件自动备份的文件格式)

       4、查看所有设置:

       RMAN> show all

       5、查看数据库方案报表:

       RMAN> report schema;CONFIGURE

       CHANNEL

       DEVICE

       TYPE

       DISK

       FORMAT '/home/oracle/backup/data1/backup_%U';(设置备份的文件格式,只适用于磁盘设备)CONFIGURE

       CHANNEL

       DEVICE

       TYPE

       DISK

       FORMAT '/home/oracle/backup/data/backup_%U';(设置备份的文件格式,只适用于磁盘设备)

       6、备份全库:

       RMAN> backup database plus archivelog delete input;(备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)

       7、备份表空间:

       热备份(归档状态下才有效果)

       1、alter tablespace tablespace_name start backup;

       2、拷贝你的该表空间的数据文件备份

       3、alter tablespace tablespace_name end backup;

       4、一个一个表空间做完,就备份完了

       RMAN> backup tablespace system plus archivelog delete input;(备份指定表空间及归档的重做日志,并删除旧的归档日志)RMAN> backup tablespace UNDOTBS plus archivelog delete input;(备份指定表空间及归档的重做日志,并删除旧的归档日志)RMAN> backup tablespace SYSAUX plus archivelog delete input;(备份指定表空间及归档的重做日志,并删除旧的归档日志)RMAN> backup tablespace TEMP plus archivelog delete input;(备份指定表空间及归档的重做日志,并删除旧的归档日志)

       8、备份归档日志:

       RMAN> backup archivelog all delete input;

       9、复制数据文件:

       RMAN> copy datafile 1 to '/home/oracle/product/10.2.0.1/backup/system.copy';/* RMAN> RMAN> RMAN> */

       10、查看备份和文件复本:

       RMAN> list backup;

       11、验证备份:

       RMAN> validate backupset 3;copy copy copy

       '/home/oracle/data/gti_sys01.dbf'

       '/home/oracle/data/gti_undotbs.dbf' '/home/oracle/data/sysaux_01.dbf' 1

       to to to '/home/oracle/product/10.2.0.1/backup/system.copy';'/home/oracle/product/10.2.0.1/backup/undo.copy';'/home/oracle/product/10.2.0.1/backup/sysaux.copy';

       12、从自动备份中恢复服务器参数文件:

       RMAN> shutdown immediate;(立即关闭数据库)

       RMAN> startup nomount;(启动实例)

       RMAN> restore spfile to pfile '/backup1/initgti.ora' from autobackup;(从自动备份中恢复服务器参数文件)

       13、从自动备份中恢复控制文件:

       RMAN> shutdown immediate;(立即关闭数据库)

       RMAN> startup nomount;(启动实例)

       RMAN> restore controlfile to '/backup1' from autobackup;(从自动备份中恢复控制文件)

       13、恢复和复原全数据库:

       RMAN> shutdown immediate;(立即关闭数据库)

       RMAN> exit(退出)

       %mv

       %rman target='gti/gti123@LANDF';(启动恢复管理器)

       RMAN> startup pfile=/home/oracle/product/10.2.0.1/dbs/initgti.ora(指定初始化参数文件启动数据库)

       RMAN> restore database;(还原数据库)

       RMAN> recover database;(恢复数据库)

       RMAN> alter database open;(打开数据库)

       14、恢复和复原表空间:

       RMAN> sql 'alter tablespace users offline immediate';(将表空间脱机)

       RMAN> exit(退出恢复管理器)

       /home/oracle/product/10.2.0.1/dbs/snapcf_gti.f /home/oracle/product/10.2.0.1/dbs/snapcf_gti.f.bak(将数据文件重命名)%mv

       %mv /home/oracle/data/gti_undotbs.dbf /home/oracle/data/gti_undotbs.dbf.bak(将表空间重命名)

       %mv /home/oracle/data/sysaux_01.dbf /home/oracle/data/sysaux_01.dbf.bak(将表空间重命名)

       %rman target='gti/gti123@LANDF';(启动恢复管理器)

       RMAN> restore tablespace users;(还原表空间)

       RMAN> recover tablespace users;(恢复表空间)

       RMAN> sql 'alter tablespace users online';(将表空间联机)

       15、增量备份与恢复:

       第一天的增量基本备份:

       RMAN> backup incremental level=0 database plus archivelog delete input;

       第二天的增量差异备份:

       RMAN> backup incremental level=2 database plus archivelog delete input;

       第三天的增量差异备份:

       RMAN> backup incremental level=2 database plus archivelog delete input;

       第四天的增量差异备份:

       RMAN> backup incremental level=1 database plus archivelog delete input;

       第五天的增量差异备份:

       RMAN> backup incremental level=2 database plus archivelog delete input;

       第六天的增量差异备份:

       RMAN> backup incremental level=2 database plus archivelog delete input;

       /home/oracle/product/10.2.0.1/dbs/gti_sys01.dbf /home/oracle/data/gti_sys01.dbf.bak(将表空间重命名)第七天的增量差异备份:

       RMAN> backup incremental level=0 database plus archivelog delete input;

       增量恢复:

       RMAN> shutdown immediate;

       RMAN> exit

       %mv

       %rman target='gti/gti123@LANDF';(启动恢复管理器)

       RMAN> startup pfile=/home/oracle/product/10.2.0.1/dbs/initgti.ora(指定初始化参数文件启动数据库)

       RMAN> restore database;

       RMAN> recover database;

       RMAN> alter database open./home/oracle/product/10.2.0.1/dbs/snapcf_gti.f /home/oracle/product/10.2.0.1/dbs/snapcf_gti.f.bak(将数据文件重命名)

       RMAN>crosscheck backupset;RMAN>delete obsolete RMAN>crosscheck archivelog all;RMAN>delete archivelog all;

第五篇:sql数据库局域网和远程异地备份数据库方案

       异地备份数据库

       2已经封装成存储过程了,如下:

       create procedure RemoteBackup as begin declare @datestr nvarchar(30)declare @bakfilename nvarchar(50)declare @bakpath nvarchar(50)

       --时间字符串

       set @datestr = convert(nvarchar(30), getdate(),121)set @datestr = Left(@datestr,19)set @datestr = replace(replace(replace(@datestr,'-',''),':',''),' ','')

       --bak文件路径

       set @bakfilename = N'CITAS_GDB_' @datestr '.bak' set @bakpath = 'z:' @bakfilename print @bakpath

       --开始备份

       --注意:(Z:后面要有一个空格)exec master..xp_cmdshell 'net use z: 192.168.20.54ShareRemoteBackup userpassword /user:computenameusername'

       backup database CITAS_GDB to disk=@bakpath

       exec master..xp_cmdshell 'net use z: /delete' end

       --你是否有足够的权限?如果有足够的权限,可以备份到本机--如果有,可以用下面的方法,查询分析器中操作:--创建共享目录 exec master.dbo.XP_cmdshell 'md c:bak' exec master.dbo.XP_cmdshell 'net share bak=c:bak'--进行数据备份

       backup database 数据库 to disk='c:bak备份.bak' /*--以下操作在我的电脑中进行: 打开我的电脑,地址栏中输入: SQL服务器的计算机名bak 复制里面的备份.bak到你的电脑就行了--我的电脑中的操作结束--*/--删除备份生成的文件

       exec master..xp_cmdshell 'del c:bak备份.bak'--删除共享

       exec master.dbo.XP_cmdshell 'net share c:bak /delete /y' exec master.dbo.XP_cmdshell 'rd c:bak'--否则,你还是完全共享你本机的目录,用下面的方法备份: backup database 数据库 to disk='你的计算机名共享目录名备份文件名'---或通过映射网络驱动器(这样可以解决权限问题)--1.映射

       exec master..xp_cmdshell 'net use z: xzc$ “密码” /user:xzadministrator' /*--说明: z: 是映射网络路径对应本机的盘符,与下面的备份对应 xzc$ 是要映射的网络路径

       xzadministrator xz是远程的计算机名,administrator是登陆的用户名

       密码 上面指定的administrator用户的密码--*/--2.进行数据库备份

       backup database 数据库名 to disk='z:备份文件名'--3.备份完成后删除映射

       exec master..xp_cmdshell 'net use z: /delete'

       注意事项:

       如果遇到通过网上邻居访问一切正常。在企业管理器里对数据库进行备份,备份文件名写入网络路径'20.1.250.83share';系统却提示“无法验证该备份文件位置是否存在。是否要使用该备份文件位置?”点击确认后,系统提示“无法打开备份设备,设备出现错误或设备脱机....”时,因该注意:SQL Server并不以Windows登录帐户访问网络共享,而是以SQL Server服务的启动帐户来访问。这时应该进入“管理工具-->服务-->MSSQLSERVER-->登录”将启动服务的本地系统帐户修改为本机管理员,重新启动服务后,问题解决。

       还应该注意:同样的“本地系统”帐户,在2000与2022里的权限却不尽相同,2000及以前的系统中的本地系统帐户只具备本地最高权限,而2022及以后的系统中,该账户在具备本机完全访问权限的同时,可以像其他域帐户一样访问网络资源。所以在2022中,却不用修改SQL服务的登录帐户就能顺利备份。

       -------

       SQLSERVER的扩展存储过程实现远程备份与恢复

       最近我在为公司的框架程序(以数据应用为导向的应用体系)做数据管理模块,这个模块的需求比较简单:备份、恢复和清理日志。我公司的软件基本上以C/S为基本架构,所以数据管理模块中两个主要的功能‘备份与恢复’都可能会在Client端操作,备份与恢复’的文件也都有可能存储在client端,因而这个数据管理模块就必须能够实现在远程备份与恢复数据库。

       文章的前提阐述完了,就该说说如何具体实现吧。其实都很简单,我想写个远程备份的测试实例

       给大家看,就能够很清楚的描述吧!

       实例说明:

       环境:win2k sqlserver 2K 查询分析器 SQLSERVER服务实例名称:mainserver 需要备份的数据库名称: msdb 本地机器名称(Client端):david 本地用户:zf 密码:123 本地域名:domain 本地提供备份需求的文件夹:e:test

       第一步: 建立共享文件夹

       在程序代码中调用(或者CMD窗口)net share test=e:test 或者用NetShareAdd这个API 简要说明:

       net share : 是WINDOWS内部的网络命令。

       作用:建立本地的共享资源,显示当前计算机的共享资源信息。

       语法:参见 net share /? 第二步: 建立共享信用关系

       master..xp_cmdshell 'net use davidtest 123 /user:domainzf' 简要说明:

       1:xp_cmdshell :是SQLSERVER的扩展存储过程。

       作用,以操作系统命令行解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。

       语法:参见SQLSERVER联机帮助 2:net use : 是WINDOWS内部的网络命令。作用,将计算机与共享资源连接或断开,或者显示关于计算机

       连接的信息。该命令还控制持久网络连接。

       语法:参见 net use /?

       第三步:备份数据库

       backup database msdb to disk='davidtestmsdb.bak' 这个不需要说明吧,语法参见SQLSERVER联机帮助

       第四步: 删除共享文件夹

       在程序代码中调用(或者CMD窗口)net share test /delete 或者用NetShareDel这个API 结果: 已处理 1376 页,这些页属于数据库 'msdb' 的文件 'MSDBData'(位于文件 1 上)。

       已处理 1 页,这些页属于数据库 'msdb' 的文件 'MSDBLog'(位于文件 1 上)。

       BACKUP DATABASE 操作成功地处理了 1377 页,花费了 3.653 秒(3.086 MB/秒)。

       这样mainserver服务器上的msdb就备份到了david机器的E:testmsdb.bak文件了,使用起来很简单吧?恢复数据库操作也是一样,只要将第三个步骤的语句改为'restore database msdb from disk='davidtestmsdb.bak'就可以啦。你看完了也可以试试呀?!(最简单的测试工具查询分析器 CMD窗口)

       备注:xp_cmdshell 这个扩展存储过程只能SA级别的用户调用,而且是SQLSERVER的安全隐患之一,许多DBA都喜欢将其删除或者禁用,所以开发人员使用时要倍加小心哦。

       文章中的例子只是简要的说明了应如何利用扩展存储过程实现远程备份与恢复,没有涉及安全以及其他方面的考虑,希望读者在代码中自行完善。本文出自 “跟着兴趣走” 博客,请务必保留此出处http://liweibird.blog.51cto.com/631764/183184