2023年7月30日发(作者:)
鲞置銎责任编辑狲浩峰 投稿信箱:neta dmjn@365maste m SQL Server 2014在数据备份与恢复中提供了一些新特性,其主要目的是方便数 据库维护,降低使用、维护成本,提升数据的安全。本文将详细介绍其提供的各种备份与 恢复方法,包括其最新提供的备份数据方法。 掌握SQL 20 1 4备份与恢复 ●石家庄李云飞 在首次备59时,采用“完 ment Studio管理界面中,右 键单击“数据库”节点,在弹 出的快捷菜单中:选择“还原 SQL Server提供了方便的 整”备份的方式。单击“添加” 图形化管理,只需要采用图形 按钮,在弹出的“选择备份目 化的方式,一步步进行操作,便 标”窗口中,输入备份的文件名 数据库”,弹出还原窗口t或右 能完成数据库的备份。 在后,在备份窗口中,单击“确定” 键单击需要还原的数据库,在 SQL Server Manage 按钮,完成数据库的完整备份。 弹出的快捷菜单中,选择“任 ment Studio管理界面中,右 数据库”。 实际上,在备份窗口中,可 务”一“还原”一“键单击需要备份的数据库,在 以更加详细指定备份的方式, 在“源”中,选择需要还原 弹出的快捷菜单中,选择“任 读者可以单击“介质选项”和 的备份数据,两种方式:一种是 务”一“备份”,弹出备份窗口, 在备份窗口界面中,采用默认 方式是备份到本地,“备份类 “备份选项”查看。 一“数据库”方式,即在本地备份 般来讲,完整备份的方 的数据库,都会列在“数据库”式适合首次备份数据库,其它 下拉列表中,这种方式适合快 型”下拉列表有三个选项,即 备份方式多数都是依赖在完整 速还原本地备份的数据库;另 “完整、“差异”和“事务”,它们 备份的基础上进行备份。如果 之间的差别是: 一种方式“设备”方式,这种方 对于存在大数据集的数据库来 式可以直接指定需要还原的备 完整:指完全备份选定的 讲,一次完整的备份是比较耗 份文件,比如从其他数据库移 数据库。 时的,如果每次都完全备份,则 植到本地的备份文件。当选择 差异:差异备份是针对完 这种方式不适合于实时性要求 需要还原的“源”后,将在“要 整备份,即只备份上一次完整 强的网站或应用。所以,一般 还原的备份集”中列出还原列 备份后变化的数据。 事务日志:指包含创建最 后一个备份(可以是完整备份 在首次采用完整备份后,以后 表。选择具体还原的备份集后, 的备份会采用其他方式进行, 比如差异备份或事务日志等, 同时,输入目标“数据库”名称, 单击“确定”,完成数据库的还 也可以是差异备份)之后对数 这样只是备份了变化的数据或 原。 据库进行的更改。因此,在进 文件,所以备份速度更陕。 行事务Et志备份前,需要对数 需要注意的是,当还原的 数据库存在时,需要确定覆盖 已存在的数据库,否则恢复将 不成功。更高级的用法,单击 据库进行一次完整的数据库备 采用图形界面还原数据库 份。 在SQL Server Manage 7O 2016 03 WWW 365master corn 责任编辑:孙浩峰投稿信箱:netadrnin@365master.com 数据管理 “文件”和“选项”查看。 DBName to disk一 d:\db. 解决方法是在:还原时,先查看 bak’WITH Diferentialt 备份文件中的逻辑文件名,然 T--SOL备份数据库 参数FORMAT表示格式 后将逻辑文件名移动到实际的 T—SQL(Transact--SQL), 化介质,CoMPREssIoN表示 目录位置。 是SQL在Microsoft SQL 采用压缩的方式。 下面T—SQL命令用于查 Server上的增强版,其提供了 采用backup database备 看备份文件中的逻辑文件名及 标准SQL的DDL和DML功 份数据库的参数较多,但基础 位置: 能,还有延伸的函数、系统预存 的和常用的是上面的备份数据 restore filelistonly from 程序以及程式设计结构。 库语句。其他的参数将在后面 disk=’d:\db.bak 使用图形化界面备份数据 使用到时,会逐步进行介绍。 运行结果将列出备份文件 库,可以直观完成整个数据库 中的逻辑文件名和其物理位 的备份过程。但作为程序员和 T—sQL还原数据库 置。 高级的网络管理员,还是喜欢 还原数据库的T--SQL命 然后采用如下T—SQL命 使用T--SQL备份语句完成数 令如下所示: 令进行恢复数据库,同时会将 据库的备份,其一,可以使用任 restore database DBName 恢复后的数据文件移动到指定 何编程语言采用远程连接的方 from disk=’d:\db.bak’ 位置: 式快速完成数据库的备份,其 以上T--SQL语句将从文 restore database NewDB 二,不用每次都点击繁琐的鼠 件“d:\db.bak”进行恢复,还 Name 标操作,其三,灵活性更强。 原为数据库DBName}但以上 from disk= d:\db.bak 完整备份数据库的 语句需要保证数据库DBName T—SQL语句如下: 不存在。如果要强制进行还原, iwth move 逻辑文件 backUP databa se 则使用如下T—SQL语句: 名1’to’d:\物理数据文件 DBName to disk一’d:\db. restore database DBName Path’ bak’WITH FoRMATt from disk= d:\db.bak ,move’逻辑数据文件名 以上备份语句将数据库 with replace 2 to C:\物理数据文件名2’ DBName备份到本地文件 以上还原语句适合于不改 “d:\db.bak”中。而下面语句 变原备份数据库的物理存储位 例如,如下T—SQL命令 使用了压缩方式备份数据库: 置。如果将备份的数据文件 列出备份文件“d:\ccccc.bak” BACKUP DATABASE 拷贝到其他服务器中进行还 中的详细信息。 DBName TO DISK一’d:\ 原时,不能保证两台服务器的 restore filelistonly from db.bak’WI,rH FoRMAT。 SOL Server 2014安装位置完 idsk= d:\ccccc.bak’ CoMPRESSIoN t 全一样,或数据文件的存放位 接着采用如下T--SQL还 差异备份数据库的 置就无法保证一致。此时,采 原命令将该备份文件进行还 T--SQL语句如下: 用如上方法还原时,会提示“系 原: backUD datab a s e 统找不到指定的文件”的错误。 restore database CC WWW 365master,com 2016 03 71 盏 责任编辑 浩峰 投稿信箱.netadm_n@365maSte m from disk一’d:\CCCCC. bak’ 点击“更改”按钮,弹出“新建 作业计划”窗口,在该窗口中, 时间内的文件。一般备份文件 保留最近一个月或三个月的 with move addd to 设置作业运行的频率以及持续 时间即可,这样,维护任务运行 时间。比如,可以设置每天晚 是,系统会自动删除指定时间 ’d:\data2\cc.mdf’ ,move’adddlog to 上3点运行指定作业,即选择 之前的文件,以节省服务器空 在数据库最少被使用时,运行 间。 设置完成后,根据提示逐 D:\data2Kcc_tog.idf。 在上面语句,更改还原后 备份任务。设置完任务作业计 的数据库名为cc,同时将备份 划后,单击“确定”按钮,以进 步完成维护任务的设置。文件中的逻辑文件移动到新的 行其他设置。 位置,并且更改了文件名称。 在“选择维护任务”页面, 这样,系统会在指定时间 完成事先设置的任务,以帮助 管理员完成繁琐的维护任务。 注意:要正确运行维护任 由此可以看出,采用如上 勾选需要维护的任务,可以同 方法,不但可以完成数据库的 时指定多项,比如勾选“备份数 备份和还原,同时可以实现数 据库(完全)”和“”清除维护” 据库的复制。 务,需要在系统服务中启动 “SQL Server代理”,否则,维 任务”两项,前一项用于设置 注意:默认无法在早期版 在指定时间自动完全备份数据 护任务将不会执行。 本的SQL Server中还原较新 库,后一项用于指定清除指定 版本的sQL Server创建的备 文件,。在这里设置“清除”任 原生加密备份数据库 份。 务很重要,如果只是无限制备 对于用户来讲,数据的安 份数据,服务器硬盘迟早会被 全性始终是第~的。不但对 设置自动备份 SQL Server 2014提供了 占满。 于数据库中的数据如此,对于 选择完成后,点击“确定” 备份的数据,同样如此。SQL 完成备份,在打开“定义备份 Server 2014加强了对备份数 配置自动备份数据库的方法, 可以指定系统自动备份的数据 数据库任务”页面中,指定备 据的加密管理,其一个新特性 库的时间、频率和方法等。这 份的数据库,同时需要注意指 就是支持原生备份加密,其使 可以进~步减少系统管理员维 定备份文件的扩展名,默认是 得如果备份文件被盗,在没有 护数据库的工作量。 在SQL Server Manage “bak”后缀。指定完成后,进 加密证书的情况下也无法使 入“定义清除维护任务”页面, 设置指定删除备份文件的 用。在SQL Server 2014中, 用户可以采用多种加密算法 ment Studio管理界面中,展开 左边“对象资源管理器”树型 条件,比如指定了删除文件的 对备份数据文件进行加密,即 节点,右键单击“维护计划”,选 所在文件夹,同时需要指定文 AES128、AES196、AES256和 择“维护计划向导”,将弹出建 件扩展名,比如“bak”,同时, 三重DES算法。 立维护计划的向导窗口,以引 需要指定文件保留时间,这样 直接使用SQL Server 导用户逐步完成创建自动维护 在同一个文件夹中会有多个指 2014的加密算法对备份数据 任务。 在“选择计划属性”页面, 定扩展名的文件存在,维护任 文件加密的前提是,存在证书 务运行时,会查找并保留指定 或非对称密钥。那么,首先应 72 201 8 03 WWW 365master∞H 责任编辑:孙浩峰 投稿信箱:netadmin@365master.com 数据管理 该是在sQL Server 2014中创 (ALGORITHM CertfficateName FROM FILE 建证书,使用如下简单T—SQL =AES一256, SERVER 一’D:\CertfficateName.cer’ 语句: CERTIFICATE—Certificate 以上T~SQL语句用 CREATE CERTIFICATE Name); 于从备份证书文件“D:\ CertfficateName 以上T—SQL语句用于 CertificateName.cer”仓U建一 ENCRYPTIoN BY 备份数据库“abc”,备份位 个名为CertificateName的证 PASSWoRD一’1221adcd’ 置“d:\abc.bak”,加密算 书。 WITH SUBJECT一 ’法采用AES_256,使用了 如果正常执行以上T—sQL SUBJECT Name t CertificateName证书。 语句,将可以在该数据库中按 CertificateName:证书名 照正常方法恢复加密后的备份 称,可改成任意名称,只要不重 还原加密的备份数据库 数据了。由此,可以发现,恢复 复。 在本地加密了备份数据 加密备份数据库的关键是备份 1221adcd:即密钥,可以设 库,如果本地SQL Server 证书,只要有正确的证书,才能 置成强密码。 2014数据库没有重新安装,或 还原数据库。 SUBJECT Name:设置主 者证书没有被删除,都可以正 题名称。 常还原加密后的备份数据库。 分离和附加数据库 以上语句创建了一个名为 但如果涉及数据库的移植和重 分离和附加数据库的方式 “CertificateName”的证书,在 新安装,就需要考虑证书的备 也是一种重要的数据库备份 加密备份中将会用到。接下 份和使用。 和还原的方法,即把数据库文 来,就可以创建加密备份数据 在本地SQL Server 2014 件(.MDF)和对应的日志文件 文件,点击“介质选项”节点, 创建了证书,就需要备份证书, (.LDF)拷贝到其它磁盘上作 设置新介质名称,点击“备{9iN 采用如下T—sQL语句: 备份,然后把这两个文件再拷 项”节点,勾选“加密备份”复 BACKUP CERTIFICA 贝到任何需要这个数据库的系 选框,选择一种加密“算法”,选 TE CertifiCate Name 统之中。 择刚创建的证书,点击“确定” T o F I L E = D:\ 如果在SQL Server运行 按钮,完成加密备份数据库。 CertificateName.cer’ 中对数据文件进行复制操作, 除了图形化界面备份数 以上T—sQL语句用于备 会提示“文件只在使用,不能复 据库,还可以直接使用如下 份证书“CertificateName”至 制”的错误。所以,数据库的复 T—sQL语句完成数据库的备 文件“D:\CertficateName. 制有如下两种方法: 份: cer”一,运行完成后,将文件“D:\ 是在系统服务中,将 BACKUP DATABASE CertificateName.cer”拷贝至U SQL Server数据库的服务停 abc TO DISK一 其他SQL Server 2014数据 止,然后再进入数据库文件位 ’d:\abe.bak’ 库服务器中,运行如下T—sQL 置复制数据库文件,包括数据 WITH CoMPRESSIoN. 语句: 库的文件(.MDF)和对应的日 ENCR YPTIoN CREATE CERTIFICATE 志文件(.LDF),以保证数据库 WWW 365master corn 20t 6 03 73 数据管理 责任编辑:孙浩峰投稿信箱:netadmin@365master.com 文件的完整性。 其次,如果系统中运行了 了。那么可以直接将数据库 while@@fetch—status <>一1 文件复制到其他服务器中,在 erver直接进行附加操 多个数据库,那么sQL Server SQL Sbegin 数据库的服务则无法停止。此 作,就可以完成数据库的还原 时,就需要使用SQL Server数 操作了。 据库提供的数据库分离方法, 现将数据库进行分离,再进行 综合应用 复制。 exec(’kiu +@spid) fetch next from getspid into@spid end close getspid deallocate getspid 实际上,数据库在还原时, 在SQL Server Manage 有很多工作需要做。比如,最 ment Studio管理界面中,右 重要的是查看当前待还原的 restore database@ @ 键单击需要分离的数据库,在 数据库是否有其他用户的连 dbname from disk一如果有,则需要先断开这些 弹出的快捷菜单中,选择“任 接,dbpath with replace end 务”一“分离”,弹出分离窗口, 连接,然后才能进行数据的还 如果有其他连接正在连接数据 原。那么,可以将这一系列动 以上创建的过程需要放在 创建一个过程,在 master数据库中,传人的两个 库,则在页面中,“状态”列显 作合在一起,示为“未就绪”,为了能正常分 还原数据库时,只需要调用该 离数据库,一定要勾选“删除连 过程即可。下面是创建过程的 参数分别是: @dbname:要恢复的数据 库; 接”复选框。单击“确定”按钮, 完成数据库的分离。 T--SQL语句: CREATE proc[dbo]. @dbpath:数据库备份文 附加数据库时,将需要附 【restoreDatabase](@dbname 件的物理路径。 rcha r(20),@dbPath 加的数据库文件和日志文件 Va 同时拷贝到指定文件夹中。 在SQL Server Management 该过程内部定义的@sql varchar(40)) aS 用于查找系统中正在运行的指 定数据库的连接,接着使用循 Studio管理界面中,右键单击 “数据库”节点,在弹出的快捷 beain 环语句断开所有连接,最后使 @S q l d e c l a r e 用恢复语句,恢复数据库。提 示:在该过程中,使用的是完 全还原语句,在实际开发中,可 以采用任何还原语句;同时, 用户在还原过程中,要连接到 master数据库,否则,会造成无 菜单中,选择“附加”,弹出“附 nvarchar(400) 加数据库”窗口,在界面中,单 击“添加”按钮,找到需要附加 declare@spid int set@sql=’declare getspid oid from 的“.MDF”文件,如果该文件 cursor for select s!正确,将在窗口中列出所有的 文件,包括“.MDF”和“.LDF” 文件,单击“确定”按钮,完成 数据库的附加。 提示:如果服务器操作系 sysprocesses where dbid=db_ id( +@dbname+ ’)’ exec(@sqD open getspid 法断开自己本身的连接,恢复 不成功的错误。 fetch next from getspid Java连接和备份 管理员在日常管理中,可 统宕机了,但数据库忘记备份 into@spid 74 2016 03 www 365master com 数据管理 责任编辑:孙浩峰投稿信箱:netadmin@365master.corn 以采用以上介绍的多种方法完 e.printStackTraceOl p u b l i C v O i d 成SQL Server 2014的备份和 } recovery(String dbname, 恢复操作。但网络开发人员和 retum conn, String dbpath){ 多数管理员还喜欢采用网页远 } try{ 程连接数据库进行数据的备份 以上采用了数据库默认 Strkng path—dbpathI 和操作,这样,即使是不懂得数 高级用户sa连接SQL Server String recoverySql一 据库管理的用户也可以采用IE 2014的master数据库,在实际 ”ALTER DATABASE”+ 访问的方式进行数据库的备份 开发中,如果不能使用sa用户, dbname+”SET 0NLINE 和还原操作。 则系统管理员提供的连接用户 W I T H R o L L B A C K Java提供了连接SQL 也要具有连接master数据库 IMMEDIATE”l//恢复连接 Server 2014的工具,通过以上 和备份恢复数据库的权限,否 PreparedStatement 理论的讲解,那么在Java中开 则会造成备份和恢复不成功。 ps—getConnectionO.prepare 发备份和恢复数据库就容易 下面是备份数据库的函 Statement(recoverySq1), 了。首先是定义数据库的连 数: CaliableStatement 接: public void backDatabase CS—get C 0nnecti0n(). pubHc static Connection (String dbname,String P r e P a r e C a l l(”{c a 1 l getConnection(){ dbpath){ Killrestore(?,?)}l1)l Connection conn nuut t { CS.setString(i, try{ String Path— dbname);//数据库名 Class.forNamef『lcorn. dbl ̄th; CS.setString(2, microsoft.sqlserver.jdbc. String backSql:” path);//已备份数据库所在 SQLServerDriver”)I backup database”+dbname 路径 String url:”jdbc +’’to disk=’”+dbpath+”’ CS.execute() /,还 :sqlserver://127.0.0.1:1433 with init;”}//创建备份语4-j 原数据库 l databaseName=master”l PreparedStatement ps.execute0I//恢 St ̄ng usernalTle一”sa”; ps—getConnection().prepare 复数据库连接 String password一”sa”l Statement(recoveryScl1), }catch(Exception e){ conn—DriverManager. lOS.execute()l//执 e.printStackTrace()l getConnection(url,uselTlame, 行备份 } pa ;wr0rd)l }catch(Exception e){ } }catch(ClassNotFound e.printStackTrace(); 限于篇幅,以上列出了在 Exception e){ } Java开发中使用到的重要函 e.printStackTrace(), } 数,在备份函数或还原函数中 } C a t C h 下面是定义还原数据库的 只需要传递数据库名称和备份 (SQLException e){ 函数: 文件路径即可。衄 www 365master corn 2016 03 75
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690655732a387818.html
评论列表(0条)