返回
中国计算机报1999年第97期

也谈“SQL Server的备份和升级”

苏红超

  第83期中曾刊登一篇文章《SQL Server的备份和升级》,里面讲到在MS SQL Server中不可以直接使用.dat文件来备份数据库。其实在MS SQL Server7.0中是可以直接拷贝.dat文件实现数据库备份的,只是要用到MS SQL Server的一些系统存储过程。

  在MS SQL server7.0中摒弃了以前版本中的设备对象,一个数据库文件包含两个文件:.mdf和.ldf。在重新安装系统之前把这两个文件拷贝出来,安装完成系统之后,再将这两个文件拷贝到SQL7安装目录的data子目录里面,然后进行如下操作就可以恢复你的数据库了。

  恢复时有两种方式可供选择:

  1调用系统存储过程SP_ATTACH_DB

  语法如下:

  s_attach_db [@dbname =] ′dbname′,

  [@filename1 =] ′filename_n′ [,...16]

  参数含义:[@dbname =] ′dbname′ 是要在MS SQL Server中注册的数据库名称,要保证惟一。

  [@filename1 =] ′filename_n′ 是数据库文件的物理名称,也就是实际的文件名称,它的起始范围是@filename1到@filename16

  返回值:成功返回0,失败返回1

  比如数据库名称叫做mydb,则重新安装系统之后,在MS Query Analyzer中运行如下命令:

  EXEC sp_attach_db @dbname = N′mydb′,

  @filename1=N′c:\mssql7\data\mydb.mdf′,

  @filename2=N′c:\mssql7\data\mydb_log.ldf′

  注意:mydb的名称在SQL Server中要惟一。

  2调用系统存储过程SP_ATTACH_SINGLE_FILE_DB

  语法如下:

  sp_attach_single_file_db [@dbname =] ′dbname′,

  [@physname =] ′physical_name′

  参数含义:[@dbname =] ′dbname′ 是要在MS SQL Server中注册的数据库名称,要保证惟一。

  [@physname =] ′phsyical_name′ 是数据库的物理文件名称。

  返回值:成功为0,失败为1

  在调用这个系统存储过程之前要先调用sp_detach_db这个存储过程。

  恢复数据库方法如下:

  例如数据库名称叫做mydb,则重新安装系统之后,在MS Query Analyzer中运行如下命令:

  EXEC sp_detach_db @dbname=′mydb′

  EXEC sp_attach_single_file_db @dbname=′mydb′,

  @physname=′c:\mssql7\data\mydb.mdf′

  调用这个存储过程不必指定日志文件,它会自动生成日志文件。

  注意:以上恢复拷贝的数据库的方法一定要保证重新安装后的SQL7的字符集和排序方式同以前的系统完全相同,否则将不会成功!

  以上恢复数据库的方法均在Windows NT 4.0英文版(SP4),Microsoft SQL Server 7.0中验证通过。