SQL Server 2005数据库加载

作者:技术拾光时间:2026-06-22 11:58:12浏览:152

在 SQL Server 中操作数据库,常见的动作包括附加、分离和删除等。具体执行时,有不少细节需要注意,稍有不慎就可能导致操作失败。以下整理这些操作的典型用法及常见注意事项,方便后续查阅。 附加数据库:sp_attach_db sp_attach_db 存储过程用于将数据库文件重新挂接到服务器上。

在 SQL Server 中操作数据库,常见的动作包括附加、分离和删除等。具体执行时,有不少细节需要注意,稍有不慎就可能导致操作失败。以下整理这些操作的典型用法及常见注意事项,方便后续查阅。

附加数据库:sp_attach_db

sp_attach_db 存储过程用于将数据库文件重新挂接到服务器上。其语法并不复杂,格式如下:

sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ]

SQL Server 2005数据库加载

参数说明:

  • @dbname:要附加的数据库名称,必须唯一,类型为 sysname,默认值为 NULL。
  • @filename1 到 @filename16:数据库文件的物理路径,最多可指定 16 个文件。文件列表中至少要包含主数据文件(.mdf),如果分离后文件被移动过,必须将新路径全部列出。

返回代码:0 表示成功,1 表示失败。

以下是一个实际示例,将 pubs 数据库的两个文件附加到当前服务器:

EXEC sp_attach_db @dbname = N'pubs', 
 @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
 @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

另一个示例,附加自定义数据库:

EXEC sp_attach_db @dbname = N'Ty20051029101451aaa', 
 @filename1 = N'd:\5屏幕\Ty20051029101451aaa_data.mdf', 
 @filename2 = N'd:\5屏幕\Ty20051029101451aaa_log.ldf'

执行上述语句后,问题即可解决。

删除数据库:DROP DATABASE

该命令用于从 SQL Server 中删除一个或多个数据库,同时会清除数据库文件和磁盘文件。语法为:DROP DATABASE database_name [ ,...n ]。

参数 database_name 指定要删除的数据库名称。如果不确定有哪些数据库,可以在 master 库中执行 sp_helpdb 查看列表。

示例:

exec sp_helpdb database_name 
exec Drop Database [Ty20051029101451aaa]

分离与重新附加:sp_detach_db

有时需要先将数据库从当前实例分离,再通过 CREATE DATABASE ... FOR ATTACH 重新挂接。典型用法如下:

sp_detach_db Archive
GO
CREATE DATABASE Archive
ON PRIMARY (FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf')
FOR ATTACH
GO

显示当前数据库信息

快速查看所有数据库的语句:

--select * from Master..sysDatabases

新建、脱机与恢复(特殊情况)

以下操作适用于特定场景:先创建数据库,然后将其设置为脱机,再从备份文件恢复,最后再次脱机。注意执行顺序:

CREATE DATABASE TestOA
ALTER DATABASE TestOA SET OFFLINE WITH ROLLBACK IMMEDIATE
RESTORE DATABASE TestOA From disk='C:\Documents and Settings\Administrator\桌面\帐套\data\Template.Dat'
ALTER DATABASE TestOA SET OFFLINE WITH ROLLBACK IMMEDIATE

其他实用组合

分离数据库:

exec sp_detach_db Km20051030011601

仅附加 .mdf 文件(不附带日志):

exec sp_attach_single_file_db km20051030011601,'D:\TestDatabase\Km20051030011601.mdf'