我想将一个 ldf 文件从一个驱动器移动到另一个驱动器。某些绝对不是我的白痴将日志文件恢复到了现在几乎已满的错误驱动器。
对于 logship 环境,数据库是只读/备用的。Alter database .. modify file
不起作用,因为数据库是只读的。我无法分离/附加,因为我无法使用create .. for attach
.
如果我使用更改数据库:
Msg 5004, Level 16, State 4, Line 9
To use ALTER DATABASE, the database must be in a writable state in which a checkpoint can be executed.
如果我尝试附加:
Msg 1824, Level 16, State 1, Line 11
Cannot attach a database that was being restored.
我做的小测试用例:
-- create ro/standby db
restore database test
from disk = 'D:\BakMcBakface.bak'
with
move 'data' to 'D:\test.mdf',
move 'log' to 'D:\test.ldf',
standby='D:\test.standby'
-- try alter
ALTER DATABASE test MODIFY FILE ( NAME = 'log', FILENAME = 'd:\test2.ldf' );
-- try detach/attach db
EXEC master.dbo.sp_detach_db @dbname = N'test'
-- attach db
CREATE DATABASE [test]
ON
(filename=N'D:\test.mdf'),
(filename=N'D:\test2.ldf')
for attach
-- with standby='D:\test.standby'
作为最后的手段,我可以进行完全恢复,但这是一个多 TB 数据库,我尽量避免这种情况。如果我可以在待机模式下连接,我就完成了。我也可以直接修改 sys 表,但我宁愿不是 Cthulhu 回归的原因。