database - 在 SQL Server 2005 中将数据库从一个驱动器移动到另一个驱动器的正确方法是什么?

标签 database sql-server-2005

我不打算将数据库完全迁移到另一台服务器,而只是将数据文件和日志文件移动到另一个具有更多空间的驱动器。我看到关于如何执行此操作的相互矛盾的说明,因此我正在寻找推荐的正确方法。

最佳答案

分离数据库:

use master
go 
sp_detach_db 'mydb'

移动数据库文件(显示 Xcopy 到 xp_cmdshell):

DECLARE @SRCData nvarchar(1000)
SET @SRCData = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mydb.mdf';
DECLARE @SRCLog nvarchar(1000)
SET @SRCLog = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mydb_log.ldf';
DECLARE @FILEPATH nvarchar(1000);
DECLARE @LOGPATH nvarchar(1000);
SET @FILEPATH = N'xcopy /Y ' + @SRCData + N' D:\Data';
SET @LOGPATH = N'xcopy /Y ' + @SRCLog + N' E:\Log';
exec xp_cmdshell @FILEPATH;
exec xp_cmdshell @LOGPATH;

重新附加数据库:

sp_attach_db 'mydb', 'D:\Data\mydb.mdf', 'E:\Log\mydb_log.ldf'

这里有更多详细信息 Microsoft KB article .

关于database - 在 SQL Server 2005 中将数据库从一个驱动器移动到另一个驱动器的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119834/

相关文章:

mysql - 在不插入的情况下获取唯一标识符

php - 根据时间间隔统计mysql表字段

database - 根据前缀在表中查找单词

sql - 如何按月递增 SQL Server 2005 中的 DateTime 字段?

SQL Server - 创建为数据库中的所有表运行的单个触发器

sql-server-2005 - SQL Server 错误处理 : exceptions and the database-client contract

sql-server-2005 - SQL Server 2005 - 查找哪些存储过程运行到特定表

mysql - 字符集和排序规则到底是什么意思?

PHP - Codeigniter 在插入数据库时​​删除破折号和括号

sql - 更新大型表的表架构的最佳方法(SQL Server)