IT猫扑网:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置:首页数据库MSSQL → 浅谈如何在SQL Server 2008中附加一个数据库

浅谈如何在SQL Server 2008中附加一个数据库

时间:2015/6/28来源:IT猫扑网作者:网管联盟我要评论(0)

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

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

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

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

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

你不能附加多个日志文件

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

在SQL Server 2008中,微软宣布上面的系统存储过程将在未来的版本中被废弃。而他们在"Create Database"SQL语句中添加了一个从句"For Attach"。

这篇文章将介绍使用"For Attach"从句的多种方法,以克服在使用sp_attach_db和sp_attach_single_file_db时要面临的限制。

假设我们有一个数据库叫"MyDB1",它有一个.MDF文件和一个.LDF文件。使用下面的事务SQL语句创建这个数据库。再假设.MDF文件和.LDF文件的位置是"C:Program FilesMicrosoft SQL ServerMSSQL10.sql2008MSSQLDATASummary Database DataData File for Monthly ArchiveMicrosoft SQL Server 2008 Data File"。

  1. Use Master   
  2. go   
  3. CREATE DATABASE MyDB1   
  4. ON   
  5. NAME = MyDB1_dat,   
  6. FILENAME = 'C:Program Files   
  7. Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA   
  8. Summary Database DataData File for Monthly Archive   
  9. Microsoft SQL Server 2008 Data FileMyDB1.mdf',   
  10. SIZE = 10,   
  11. MAXSIZE = 50,   
  12. FILEGROWTH = 5 )   
  13. LOG ON   
  14. NAME = MyDB1_log,   
  15. FILENAME = 'C:Program Files   
  16. Microsoft SQL ServerMSSQL10.SQL2008MSSQLDATA   
  17. Summary Database DataData File for Monthly Archive   
  18. Microsoft SQL Server 2008 Data FileMyDB1.ldf',   
  19. SIZE = 5MB,   
  20. MAXSIZE = 25MB,   
  21. FILEGROWTH = 5MB )   
  22. GO  

现在,让我们分离该数据库,并尝试使用sp_detach_db和 sp_attach_db将它重新附加。执行下面的事务SQL语句。

  1. use master   
  2. go   
  3. sp_detach_db 'MyDB1'   
  4. go   
  5. sp_attach_db 'MyDb1',   
  6. 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data   
  7. Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf',   
  8. 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data   
  9. Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'   
  10. GO   
  11. 你可以使用具有"For Attach"从句的"Create database"命令附加上相同的数据库文件,如下所示。   
  12. use master   
  13. go   
  14. sp_detach_db 'MyDB1'   
  15. go   
  16. CREATE DATABASE MyDB1   
  17. ON   
  18. (   
  19. FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data   
  20. Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.mdf'   
  21. ),   
  22. (   
  23. FILENAME = 'C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data   
  24. Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf'   
  25. for Attach   
  26. go  

现在,让我们分离数据库MyDB1,然后删除.ldf文件,再然后使用sp_attach_single_file_db系统存储过程通过执行下面的TSQL命令将它重新附加上。

  1. use master   
  2. go   
  3. sp_detach_db 'MyDB1'   
  4. go   
  5. exec master..xp_cmdshell 'del "C:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATASummary Database Data   
  6. Data File for Monthly ArchiveMicrosoft SQL Server 2008 Data FileMyDB1.ldf"'   
  7. go  

注意:我使用xp_cmdshell来删除.ldf文件。如果xp_cmdshell没有激活,那么你将得到下面的错误。

错误:

  1. Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1   
  2. SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshe

    关键词标签:SQL Server 2008

相关阅读

文章评论
发表评论

热门文章 SqlServer2005对现有数据进行分区具体步骤SqlServer2005对现有数据进行分区具体步骤sql server系统表损坏的解决方法sql server系统表损坏的解决方法MS-SQL2005服务器登录名、角色、数据库用户MS-SQL2005服务器登录名、角色、数据库用户Access、SQL Server、Oracle常见应用的区别Access、SQL Server、Oracle常见应用的区别

相关下载

人气排行 如何远程备份(还原)SQL2000数据库SQL2000数据库远程导入(导出)数据配置和注册ODBC数据源-odbc数据源配置教程SQL2000和SQL2005数据库服务端口查看或修改SQL Server 2005降级到2000的正确操作步骤修改Sql Server唯一约束教程浅谈JSP JDBC来连接SQL Server 2005的方法SQL Server创建表语句介绍