精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● 数据库技术>>Sybase产品>> SQL Server的备份和升级 (转自中计报(w

主题: SQL Server的备份和升级 (转自中计报(w
发信人: cheenle()
整理人: (2000-04-02 12:46:37), 站内信件
良好的DBA管理可以避免或恢复数据库的突发事件。笔者将在本文中分别讨论Syb
ase SQL Server和Microsoft SQL Server的数据备份功能及一些升级时应注意的
事项,最后以表格的形式对两种SQL Server 的备份功能进行了比较。


  ◆Sybase SQL Server


  s1.在Sybase SQL Server中,一台机器上可以建立多个彼此相互独立的Ser
ver,并支持各Server之间.dat文件的直接覆盖。这些Server各有一个独立的目录
,下有两个子目录data和install。可以将Server1的data目录下的.dat文件覆盖
拷贝到Server2的data目录下,这样Server1中的所有内容就被完全复制到Server
2中。这是Sybase SQL Server中最简单最完全的一种数据备份和复制功能。

  2.用DUMP 和LOAD命令来备份和恢复指定的数据库。简单语法分别为:

  DUMP DATABASE DatabaseName to DeviceName

  LOAD DATABASE DatabaseName from DeviceName

  SQL Server有三个系统数据库:master、sybsystemprocs和model,以及一个
临时数据库tempdb。LOAD命令要求被LOAD的数据库不在使用,所以通常在master
中运行LOAD命令。需要注意的是,LOAD database Master命令只能运行在单用户
模式(single user mode),而LOAD其他库时必须运行在多用户模式。这是因为
单用户模式使用Trace Flag 3608,它是专用来恢复master库的。

  从单用户模式启动SQL Server有两种方法:

  (1)运行 % startserver -m -f runserver -filename

  (2)在Server Config工具中,在Command line中设置参数-m,再启动相应
的服务即可。推荐使用这种方法。

  一旦master库被成功地LOAD,Adaptive Server自动将其关闭,退出当前的i
sql session,并给出以下信息:DB-Library: Unexpected EOF from SQL Serv
er。这时只要重启相应的服务即可。其他库LOAD完成以后,处于offline状态,需
用online database命令激活。

  不管在哪个数据库中工作,SQL Server的所有用户都共享了用于工作表和临
时表的tempdb数据库。既然它总处于in use状态,所以tempdb不可能用LOAD命令
恢复,实际上也没有恢复的必要。

  3.升级Sybase SQL Server时应注意的是:

  (1)升级所需的total memory 至少应为28672KB。应在升级前用sp—confi
gure查看该项大小并设置正确值。sp—configure 中显示的值是以2KB为单位的。


  (2)若升级到11.9.2版本,sybsystemprocs推荐的大小为60MB,用户数据库
则必须大于1MB。若大小不够可用alter database命令来修改。

  若以上两个条件不能满足,预升级(pregrade)将会失败,从而导致升级失
败。升级失败对原数据库没有影响,但某些系统存储过程可能不能再使用,如sp
—configure等。此时无法再修改系统配置,所以在升级前一定要确认以上两个条
件。升级成功以后,高版本系统成功地装载,并将以前创建的所有server自动升
级。

  即使升级失败,高版本的系统仍然能成功地安装,但是原来创建的server仍
是低版本的。这时可用LOAD命令将以前在较低版本中用DUMP命令备份的除master
库以外的所有数据库(包括model,sybsystemprocs和用户库)恢复,被恢复的库
会自动升级。可以用sp—configure查看upgrade version项来获知当前版本。

  在通过这种方式恢复的数据库中,使用原来定义的存储过程和触发器时,系
统会提示重新编译,这是因为存储过程和触发器涉及到的表已经改变。有以下几
种解决的方法:

  (1)用exec proc—name WITH RECOMPILE命令强制存储过程在执行时重新编
译。

  (2)用sp—remap proc—name/trigger—name命令来升级指定的存储过程和
触发器。若被指定的存储过程或触发器已经升级,则对其无任何影响。

  (3)sp—recompile table—name命令将引起当前数据库中使用该表的所有
存储过程和触发器在执行时被自动重新编译。需注意的是系统表不能被重新编译



  

--
———————————————
春花秋月何时了?还是上网好! |
———————————————
email:[email protected]
Icq: 25899712

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.99.18.7]

[关闭][返回]