哈喽朋友!
我的代码是这样的:
ALTER DATABASE DBTest SET OFFLINE WITH ROLLBACK IMMEDIATE;
--移动数据文件和事务日志文件到新位置。运行以下TSQL语句:
ALTER DATABASE DBTest MODIFY FILE(NAME=DBTest,FILENAME='F:\DBTest.mdf');
ALTER DATABASE DBTest MODIFY FILE(NAME=DBTest_Log,FILENAME='F:\DBTest_Log.ldf');
ALTER DATABASE DBTest SET  ONLINE
结果是日志文件移动成功,可是主文件却失败了:提示:
消息 5041,级别 16,状态 2,第 1 行
MODIFY FILE 失败。文件 'DBTest' 不存在。[/color]

解决方案 »

  1.   

    SELECT  name ,
            physical_name AS CurrentLocation ,
            state_desc
    FROM    sys.master_files
    WHERE   database_id = DB_ID(N'<database_name>') ;
    看看有没有你的文件
      

  2.   

    你把where那段去掉看看其他库有没有,如果有,你可能需要先重新附件mdf和ldf,然后再迁移了。
      

  3.   

    其他数据库使用那个语句是可以查看到的!只有要迁移的DBTest不行!难道是因为
    ALTER DATABASE DBTest SET OFFLINE WITH ROLLBACK IMMEDIATE;
    中的ROLLBACK IMMEDIATE引起的!
      

  4.   

    加了锁应该是你的文件不能随便动.....,那你停掉SQLServer服务,然后把这些文件复制到别的文件夹。再开启服务,把原有数据库删了,再附加回去。但是比较保险的做法是在这所有步骤之前先备份一个文件。移动数据库的步骤:
    http://blog.csdn.net/dba_huangzj/article/details/7630136不过切记操作前先备份