之前我的windows上已安装好了sqlserver2017,有一个名为TestDb的数据库。ldf文件和mdf文件都一起放在D:\Database目录下。现在需要把ldf日志文件到E盘的database目录下。
重要的事情先说三遍
先停止网关(例如nginx)并备份数据库
先停止网关(例如nginx)并备份数据库
先停止网关(例如nginx)并备份数据库
我是先认真看了官方文档https://learn.microsoft.com/zh-cn/sql/relational-databases/databases/move-user-databases?view=sql-server-ver16
一、查看数据库文件的位置
use master
go
select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files where database_id=db_id(N'TestDb');
go
二、输入以下语句使数据库TestDb离线
ALTER DATABASE TestDb SET OFFLINE WITH ROLLBACK IMMEDIATE;
三、手动复制TestDb_log.ldf到E盘的database目录
四、再删除D盘Database下的TestDb_log.ldf
五、再设置TestDb_log.ldf的属性,在高级里面查找到Authenticated Users并添加上
还要编辑Authenticated Users把权限都勾上
否则会现无法打开物理文件“E:\database\TestDb_log.ldf”。操作系统错误 5:“5(拒绝访问。)”。这样的错误
六、输入以下语句将文件移到新位置
ALTER DATABASE TestDb MODIFY FILE ( NAME =TestDb_log, FILENAME = 'E:\database\TestDb_log.ldf');
七、使数据库存TestDb上线
ALTER DATABASE TestDb SET ONLINE;