文章作者:苏红超
第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中验证通过。