ITPub博客

首页 > 数据库 > > sqlserver修改文件路径遇到的恢复挂起

sqlserver修改文件路径遇到的恢复挂起

作者:AI中国 时间:2023-02-23 10:34:26 0 删除 编辑

centos7.9+sqlserver2019

sqlserver for linux的安装参考:https://www.modb.pro/db/445811

一、正确步骤如下:

1 查看当前的存放位置

select database_id,name,physical_name AS CurrentLocation,state_desc,size from sys.master_files
where database_id=db_id(N'adjyc')

2 修改文件的存放位置下次启动生效

alter database adjyc modify file(name=adjyc_data_jyc01,filename='/mssql/data/adjyc_data_jyc01.mdf');
alter database adjyc modify file(name=adjyc_log_jyc01,filename='/mssql/data/adjyc_log_jyc01.ldf');

3 脱机 如果脱机时间过长,说明有事务未提交或者其他连接未断开,杀死所有线程或连接即可

脱机:
ALTER DATABASE adjyc SET OFFLINE;
删进程连接:
declare @spid int ;
declare @ddlstring nvarchar(max);
declare @dbname varchar(200);
set @dbname='adjyc';
declare tmpcur cursor
for select distinct spid as spid from sys.sysprocesses
where dbid=db_id(@dbname) ;

OPEN tmpcur;
fetch tmpcur into @spid ;
while (@@FETCH_STATUS=0)
begin
set @ddlstring=N'Kill '+CONVERT( nvarchar,@spid) ;
execute sp_executesql @ddlstring ;
fetch tmpcur into @spid ;
end ;

close tmpcur ;
deallocate tmpcur ;


4 把文件拷到指定的文件夹下

cp -p /var/opt/mssql/data/xxx /mssql/data/

5 联机,可能会报错,说没有访问文件权限问题,设置对应权限即可

联机:
ALTER DATABASE adjyc SET ONLINE;

权限:
chown -R mssql:mssql /mssql
chmod -R 755 /mssql

二、未按上述步骤操作将可能遇到的问题:

如果没有做【步骤3脱机】,直接拷贝,那么再次启动sqlserver服务,会看到数据库处于【恢复挂起】的状态。
此时尝试如下步骤是失败的:

USE master
GO
ALTER DATABASE adjyc SET SINGLE_USER
GO
ALTER DATABASE adjyc SET EMERGENCY
GO
DBCC CHECKDB(adjyc,REPAIR_ALLOW_DATA_LOSS)
go
ALTER DATABASE adjyc SET ONLINE
GO
ALTER DATABASE adjyc SET MULTI_USER
GO


报错信息如下类似:

File activation failure. The physical file name "/mssql/data/adjyc_data_jyc01.mdf" may be incorrect.


正确的恢复方式如下:

USE [master]
GO
CREATE DATABASE [adjyc] ON
( FILENAME = N'/mssql/data/data_jyc01.mdf' )
FOR ATTACH_REBUILD_LOG
GO

相关参考:
https://sqlsailor.com/2011/12/28/file-activation-failure-the-physical-file-name-cprogram-filesmicrosoft-sql-serverpath-may-be-incorrect-the-log-cannot-be-rebuilt-when-the-primary-file-is-read-only/

本文来源https://www.modb.pro/db/453116

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31560284/viewspace-3157407/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: R base常用函数
请登录后发表评论 登录
全部评论

注册时间:2019-12-23

  • 博文量
    212
  • 访问量
    2476