SQL Server2008的新特性--附加分离数据库

 在SQL Server 7.0中,微软推出了sp_attach_db和sp_attach_single_file_db系统存储过程。 它对于SQL Server数据库管理员执行下面的任务是非常方便的:

1 使用sp_attach_db系统存储过程直接将.MDF和.LDF文件附加到服务器。

2 使用sp_attach_single_file_db系统存储过程只附加.MDF文件。

3 使用sp_detach_db将数据库从一个服务器分离,复制.MDF文件到另一个服务器上,然后使用 sp_attach_db系统存储过程重新附加这些文件到两个服务器上。

 

尽管它对于SQL Server数据库管理员是很有用的,但是在使用这两个存储过程时是有一些限制的。限制如下:

1 你不能附加多个日志文件

2 你不能附加16个以上的文件

 

在SQL Server 2008中,微软宣布上面的系统存储过程将在未来的版本中被废弃。而他们在"Create Database" SQL语句中添加了一个从句"For Attach"。 下面介绍使用"For Attach"从句的多种方法,以克服在使用sp_attach_db和sp_attach_single_file_db时要面临的限制。

--建立测试数据库

Use Master go

CREATE DATABASE TestDB ON

( NAME = TestDB,

   FILENAME = 'D:/TestDB.mdf',

   SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5

)

LOG ON

( NAME = TestDB_log,

  FILENAME = 'D:/TestDB_log.ldf',

  SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB

) GO

--现在,让我们分离该数据库,并尝试使用sp_detach_db和sp_attach_db将它重新附加。

--执行下面的事务SQL语句。

use master

go

sp_detach_db 'TestDB'

go sp_attach_db 'TestDB', 'D:/TestDB.mdf', 'D:/TestDB_log.ldf'

go 

--你也可以使用具有"For Attach"从句的"Create database"命令附加上相同的数据库文件,如下所示:

use master

go

sp_detach_db 'TestDB'

go

CREATE DATABASE TestDB ON (FILENAME = 'D:/TestDB.mdf'), (FILENAME = 'D:/TestDB_log.ldf') for Attach

go

--现在,让我们分离数据库TestDB,然后删除.ldf文件,再然后使用sp_attach_single_file_db

--系统存储过程通过,执行下面的TSQL命令将它重新附加上。

use master

go

sp_detach_db 'TestDB'

go

exec master..xp_cmdshell 'del "D:/TestDB_log.ldf"'

go

--你可以使用下面的事务SQL语句来激活xp_cmdshell。 

use master

go

sp_configure 'show advanced options',1

go

reconfigure with override

go

sp_configure 'xp_cmdshell',1

go

reconfigure with override

go

--或者,你可以在MS-DOS命令提示符中使用Windows资源管理器的"Del"命令来删除.ldf文件。

--现在,让我们只使用sp_attach_single_file_db来附加.MDF文件。执行下面所示的命令:

use master

go

sp_attach_single_file_db 'TestDB', 'D:/TestDB.mdf'

go

--你可以只通过使用带有"For ATTACH_REBUILD_LOG"从句的"Create database"命令来附加

--相同的数据库.MDF文件,如下所示:

use master

go

sp_detach_db 'TestDB'

go

exec master..xp_cmdshell 'del "D:/TestDB_log.ldf"'

go

--注意:当日志文件被重新创建时,SQL Server自动对日志文件名称添加后缀"_log"。

CREATE DATABASE TestDB ON ( FILENAME ='D:/TestDB.mdf' ) for ATTACH_REBUILD_LOG

--本文介绍了带有"For Attach"和"for ATTACH_REBUILD_LOG"用于一个单独的.MDF文件和一个单独的.

--LDF文件的"Create Database"语句的使用。

--摘选自CSDN论坛,作者东升哥。


发布了12 篇原创文章 · 获赞 3 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览