如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库和日志文件移到新位置
2012-05-08 19:32
851 查看
转自:http://support.microsoft.com/kb/224071
更改某些 SQL Server 系统数据库的位置必须遵循的步骤与更改用户数据库的位置必须遵循的步骤不同。将分别对这些特殊情况给予说明。
注意:SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。不要将 SQL Server 7.0master、model、msdb 或分发数据库附加到 SQL Server 2000。如果您使用的是 SQL Server 2005,则只能将 SQL Server 2005 数据库附加到一个实例。
本文的所有示例都假设 SQL Server 安装在 D:\Mssql7 目录中,而且所有数据库和日志文件都位于默认目录 D:\Mssql7\Data 中。这些示例将所有数据库的数据和日志文件都移到 E:\Sqldata。
回到顶端
从数据库的当前位置备份当前所有数据库,尤其是 master 数据库。
必须具有系统管理员 (sa) 权限。
必须知道数据库的所有数据文件和日志文件的名称及当前位置。
注意:可以使用存储过程 sp_helpfile 来确定数据库所使用的所有文件的名称和当前位置:
应可以以独占方式访问被移动的数据库。如果在此过程中出现问题并且无法访问已经移动的数据库,或无法启动 SQL Server,则需要查看 SQL Server 错误日志和 SQL Server 联机丛书以获取这些错误的更多信息。
回到顶端
以下示例将移动一个名为 mydb 的数据库,该数据库包含一个数据文件
Mydb.mdf 和一个日志文件 Mydblog.ldf。如果您要移动的数据库还有其他数据或日志文件,请在存储过程 sp_attach_db 中用一个逗号分隔的列表将它们全部列出。无论数据库包含多少文件,存储过程 sp_detach_db 都不会更改,原因是它不会列出这些文件。
按如下所示分离数据库:
然后,将数据和日志文件从当前位置 (D:\Mssql7\Data) 复制到新位置 (E:\Sqldata)。
按如下所示重新附加指向新位置中这些文件的数据库:
使用 sp_helpfile 确认文件位置的更改:
filename 列的值应当反映出新的位置。
更改某些 SQL Server 系统数据库的位置必须遵循的步骤与更改用户数据库的位置必须遵循的步骤不同。将分别对这些特殊情况给予说明。
注意:SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。不要将 SQL Server 7.0master、model、msdb 或分发数据库附加到 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 都不会更改,原因是它不会列出这些文件。
按如下所示分离数据库:
use master go sp_detach_db 'mydb' go
然后,将数据和日志文件从当前位置 (D:\Mssql7\Data) 复制到新位置 (E:\Sqldata)。
按如下所示重新附加指向新位置中这些文件的数据库:
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 列的值应当反映出新的位置。
相关文章推荐
- 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
- 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
- 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
- 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置(转载)
- 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
- 如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
- 如何在 SQL Server 2005 中使用 DBCC SHRINKFILE 语句收缩事务日志文件-数据库知识
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- 详解SQL Server如何修改数据库物理文件的存在位置
- SQL Server 2008 R2 下如何清理数据库日志文件
- 如果你的数据库文件只剩下数据文件没有日志文件时,如何附加 (摘自:http://www.cnblogs.com/yukaizhao/archive/2008/07/23/sp_attach_single_file_db.html)
- SQL Server 2008 R2 下如何清理数据库日志文件
- sql server 如何通过mdf文件和ldf文件恢复数据库
- 如何获取SQL Server 2008数据库数据文件的位置
- 如何压缩SQL Server 2005指定数据库文件和日志的大小?
- SQL Server 2008 没有日志文件,使用MDF文件附加数据库
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
- (转)如何压缩SQL Server 2005指定数据库文件和日志的大小?