IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 数据库 > MSSQL > 浅谈如何在SQL Server 2008中附加一个数据库

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

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(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

相关阅读 sql server系统表损坏的解决方法 SQL Server asp.net 数据提供程序连接池 SqlServer2005对现有数据进行分区具体步骤 一个Access数据库数据传递的实例方法 为导入文件加上时间戳标记的两种方法 SQL Server 2005 在不允许远程连接的情况下的破解

文章评论
发表评论

热门文章 sql server系统表损坏的解决方法 sql server系统表损坏的解决方法 SqlServer2005对现有数据进行分区具体步骤 SqlServer2005对现有数据进行分区具体步骤 解决SQL Server中Group无法实现的问题 解决SQL Server中Group无法实现的问题 SQL Server 2005降级到2000的正确操作步骤 SQL Server 2005降级到2000的正确操作步骤 手把手教你学会SQL Server镜像操作 手把手教你学会SQL Server镜像操作 实战手记:让百万级数据瞬间导入SQL Server 实战手记:让百万级数据瞬间导入SQL Server

相关下载

人气排行 配置和注册ODBC数据源-odbc数据源配置教程 如何远程备份(还原)SQL2000数据库 SQL2000数据库远程导入(导出)数据 SQL2000和SQL2005数据库服务端口查看或修改 修改Sql Server唯一约束教程 SQL Server 2005降级到2000的正确操作步骤 sql server系统表损坏的解决方法 浅谈JSP JDBC来连接SQL Server 2005的方法 SQL Server创建表语句介绍 MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系 如何使用SQL Server中的客户端配置工具 SQL Server 分布式查询:OLE DB连接(一)