如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库和日志文件移到新位置

转自:http://support.microsoft.com/kb/224071

更改某些 SQL Server 系统数据库的位置必须遵循的步骤与更改用户数据库的位置必须遵循的步骤不同。将分别对这些特殊情况给予说明。

注意:SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。不要将 SQL Server 7.0 mastermodelmsdb 或分发数据库附加到 SQL Server 2000。如果您使用的是 SQL Server 2005,则只能将 SQL Server 2005 数据库附加到一个实例。
本文的所有示例都假设 SQL Server 安装在 D:\Mssql7 目录中,而且所有数据库和日志文件都位于默认目录 D:\Mssql7\Data 中。这些示例将所有数据库的数据和日志文件都移到 E:\Sqldata。

先决条件

  • 从数据库的当前位置备份当前所有数据库,尤其是 master 数据库。
  • 必须具有系统管理员 (sa) 权限。
  • 必须知道数据库的所有数据文件和日志文件的名称及当前位置。

    注意:可以使用存储过程 sp_helpfile 来确定数据库所使用的所有文件的名称和当前位置:
    use <database_name>
    go
    sp_helpfile
    go
  • 应可以以独占方式访问被移动的数据库。如果在此过程中出现问题并且无法访问已经移动的数据库,或无法启动 SQL Server,则需要查看 SQL Server 错误日志和 SQL Server 联机丛书以获取这些错误的更多信息。

移动用户数据库

以下示例将移动一个名为  mydb  的数据库,该数据库包含一个数据文件 Mydb.mdf 和一个日志文件 Mydblog.ldf。如果您要移动的数据库还有其他数据或日志文件,请在存储过程  sp_attach_db  中用一个逗号分隔的列表将它们全部列出。无论数据库包含多少文件,存储过程  sp_detach_db  都不会更改,原因是它不会列出这些文件。
  1. 按如下所示分离数据库:
    use master
       go
       sp_detach_db 'mydb'
       go
  2. 然后,将数据和日志文件从当前位置 (D:\Mssql7\Data) 复制到新位置 (E:\Sqldata)。
  3. 按如下所示重新附加指向新位置中这些文件的数据库:
    use master
      go
      sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
      go
    使用 sp_helpfile 确认文件位置的更改:
    use mydb
       go
       sp_helpfile
       go
    filename 列的值应当反映出新的位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值