怎样使用FileGroups附加一个数据库文件

转帖|其它|编辑:郝浩|2010-06-29 10:36:26.000|阅读 813 次

概述:本篇文章将介绍怎样使用FileGroups附加一个数据库的.MDF文件和.LDF文件。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  假设我们有一个数据库叫MyDB2,它在主文件组上有一个.MDF文件,在次文件组上有两个.NDF文件以及一个.LDF文件。执行下面的事务SQL语句来创建数据库MyDB2。

  以下是引用片段:

以下是引用片段:
USE [master]
  GO
  /****** Object: Database [MyDB2]
  Script Date: 08/11/2009 12:07:59 ******/
  IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDB2')
  DROP DATABASE [MyDB2]
  GO
  CREATE DATABASE MyDB2
  ON PRIMARY
  ( NAME='MyDB2_Primary',
  FILENAME=
  'c:\data\MyDB2_Prm.mdf',
  SIZE=2MB,
  MAXSIZE=10MB,
  FILEGROWTH=1MB),
  FILEGROUP MyDB2_FG1
  ( NAME = 'MyDB2_FG1_Dat1',
  FILENAME =
  'c:\data\MyDB2_FG1_1.ndf',
  SIZE = 1MB,
  MAXSIZE=10MB,
  FILEGROWTH=1MB),
  ( NAME = 'MyDB2_FG1_Dat2',
  FILENAME =
  'c:\data\MyDB2_FG1_2.ndf',
  SIZE = 1MB,
  MAXSIZE=10MB,
  FILEGROWTH=1MB)
  LOG ON
  ( NAME='MyDB2_log',
  FILENAME =
  'c:\data\MyDB2.ldf',
  SIZE=1MB,
  MAXSIZE=10MB,
  FILEGROWTH=1MB);
  GO
  现在让我们使用sp_deatch_db系统存储过程分离数据库MyDB2并使用sp_attach_db系统存储过程附加它,如下所示。执行下面的事务SQL语句。

以下是引用片段:
use master
  go
  sp_detach_db [MyDB2]
  go
  sp_attach_db 'MyDB2','c:\data\MyDB2_Prm.mdf',
  'c:\data\MyDB2_FG1_1.ndf',
  'c:\data\MyDB2_FG1_2.ndf',
  'c:\data\MyDB2.ldf'
  go
  你可以使用具有“For Attach”从句的“Create database”命令附加相同的数据库文件,如下所示。
  use master
  go
  sp_detach_db [MyDB2]
  go
  CREATE DATABASE MyDB2
  ON PRIMARY
  (FILENAME = 'c:\data\MyDB2_Prm.mdf'),
  (FILENAME = 'c:\data\MyDB2_FG1_1.ndf'),
  (FILENAME = 'c:\data\MyDB2_FG1_2.ndf'),
  (FILENAME = 'c:\data\MyDB2.ldf')
  for attach
  go
  在图1.0中,你可以看到这个文件组,FILEGROUP MyDB2_FG1,在使用sp_attach_db系统存储过程并使用具有“for attach”从句的“Create Database”命令附加它之后它仍然完整无缺。

  图 1.0

  现在让我们使用sp_detach_db系统存储过程分离数据库“MyDB2”,删除.LDF文件并试着使用sp_attach_db和具有“for ATTACH_REBUILD_LOG”从句的“Create Database”来重建日志。

以下是引用片段:
 use master
  go
  sp_detach_db 'MyDB2'
  go
  exec master..xp_cmdshell 'del c:\data\MyDB2.ldf'
  go
  注意:我使用xp_cmdshell来删除.ldf文件。如果xp_cmdshell没有被激活,那么你会得到下面的错误。
  错误:
  Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
  SQL Server blocked access to procedure 'sys.xp_cmdshell' of
  component 'xp_cmdshell' because this component is turned off
  as part of the security configuration for this server. A system
  administrator can enable the use of 'xp_cmdshell' by using
  sp_configure. For more information about enabling 'xp_cmdshell',
  see "Surface Area Configuration" in SQL Server Books Online.
  你可以使用下面的事务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 Explorer的“Del”命令来删除.ldf文件。

  现在让我们使用sp_attach_db系统存储过程来附加.MDF文件和.NDF文件。执行下面的命令。

  sp_attach_db 'MyDB2',

  'c:\data\MyDB2_Prm.mdf','c:\data\MyDB2_FG1_1.ndf'

  ,'c:\data\MyDB2_FG1_2.ndf'

  结果:

  File activation failure. The physical file name "c:\data\MyDB2.ldf" may be incorrect.

  New log file 'c:\data\MyDB2_log.LDF' was created.

  注意:当日志文件被重建后,SQL Server会自动在日志文件名称后加后缀“_log”。

  你可以只使用具有“for ATTACH_REBUILD_LOG”从句的“Create database”命令来附加相同的数据库. MDF文件。

以下是引用片段:
use master
  go
  sp_detach_db 'MyDB2'
  go
  exec master..xp_cmdshell 'del c:\data\MyDB2_log.LDF'
  go
  CREATE DATABASE MyDB2
  ON PRIMARY
  (FILENAME = 'c:\data\MyDB2_Prm.mdf'),
  (FILENAME = 'c:\data\MyDB2_FG1_1.ndf'),
  (FILENAME = 'c:\data\MyDB2_FG1_2.ndf')
  for ATTACH_REBUILD_LOG
  go
  结果:
  File activation failure. The physical file name "c:\data\MyDB2_log.LDF" may be incorrect.
  New log file 'c:\data\MyDB2_log.LDF' was created.
  记住,当附加之前版本,例如SQL Server 2000和SQL Server 2005的.MDF文件和.LDF文件时,SQL Server会自动升级这个数据库到SQL Server 2008。

  但是,你不能附加SQL Server 2008的.MDF文件和.LDF文件到SQL Server 2005和SQL Server 2000服务器。

  警告:请先在你的测试或QA服务器上试验上面介绍的命令。不要在一个生产机器上在不了解结果的情况下尝试执行系统存储过程比如sp_detach_db和xp_cmdshell。

  总结

  本篇文章介绍了怎样使用FileGroups附加一个数据库.MDF文件和.LDF文件。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP