介绍
Microsoft SQL Server(简称MSSQL)是一款由Microsoft公司开发的关系型数据库管理系统,可用于大型企业级数据库应用,同时适用于小型企业和个人数据库应用。在使用MSSQL的过程中,有时会遇到正在还原的数据库需要取消的情况,本文将介绍如何快速取消正在还原的数据库。
步骤
步骤一:查看正在还原的进度和会话ID
在MSSQL服务器上,通过以下查询查看正在还原的进度和会话ID:
SELECT session_id as SPID, command, a.text AS Query, start_time, percent_complete,
CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar)+':'+
CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar)+':'+
CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) as running_time,
a.database_id,
(SELECT text FROM sys.dm_exec_sql_text(b.sql_handle)) as batch_text
FROM sys.dm_exec_requests a
CROSS APPLY sys.dm_exec_sql_text(sql_handle) b
WHERE command IN ('RESTORE DATABASE','BACKUP DATABASE');
以上查询语句会返回正在还原和备份的数据库的会话ID、查询进度等详细信息,输出结果如下:
session_id:进程ID
command:当前进程正在执行的操作
Query:当前进程正在执行的查询语句,back up/restore的查询语句较长,如果要显示完整的语句,可以将其导出到txt文件查看
percent_complete:百分比进度
start_time:开始时间
running_time:已经运行的时间
database_id:正在还原的数据库的ID,每个数据库对应一个唯一的ID
步骤二:使用杀死进程命令关闭还原进程
使用以下命令可以杀死会话ID为“xxx”的进程:
KILL xxx;
其中,xxx代表正在还原的进程ID,执行以上命令后,正在还原的进程即会被停止,还原也随之取消。
步骤三:删除停止还原进程后创建的临时文件
在MSSQL服务器上,取消还原操作后,可能会留下一些临时文件,可以使用以下命令删除这些临时文件:
DELETE FROM msdb..backupset
WHERE backup_set_id IN (SELECT backup_set_id FROM msdb..backupset WHERE database_name = 'database_name' and type = 'D' order by backup_finish_date desc)
其中,database_name为停止还原的数据库名,type为还原类型,'D'表示完全还原。此命令可以删除所有的完全还原的备份文件。
总结
本文介绍了如何快速取消正在还原的数据库,主要的步骤包括查看正在还原的进度和会话ID、使用杀死进程命令关闭还原进程和删除停止还原进程后创建的临时文件。在操作时需要注意数据备份的安全性,避免误操作导致数据丢失。