SQL Server生产服务器-所有数据库都处于恢复挂起状态

drkbr07n  于 2022-12-03  发布在  SQL Server
关注(0)|答案(5)|浏览(323)

我的SQL Server生产服务器中的所有数据库都处于恢复挂起状态。我尝试执行不同的查询,但这些查询毫无用处。请帮助我,因为客户端的生产工作已停止。
尝试执行alter commands-但显示如下错误:
消息5120,级别16,状态101,第1行无法打开物理文件“G:\Data\MSSQL\Database.mdf”。操作系统错误3:“3(系统找不到指定的路径。)"。文件激活失败。物理文件名“G:\Data\MSSQL\Data\Database_log.ldf”可能不正确。消息945,级别14,状态2,第1行数据库“Database”无法打开,原因是文件不可访问或者内存或磁盘空间不足。有关详细信息,请参阅SQL Server错误日志
消息5069,级别16,状态1,行1

4sup72z8

4sup72z81#

恢复挂起意味着由于某种原因SQL无法对数据库运行重新启动恢复。这通常是因为日志丢失或损坏。
请检查是否可以在指定的文件夹中找到Database.mdf和Database_log.ldf文件。请检查您的系统磁盘空间是否不足。
这可能是由硬盘故障引起的。您可能需要对上次完整备份、所有差异备份进行完全还原,然后还原日志,直到发生日志错误为止。
参见类似问题here

bvn4nwqk

bvn4nwqk2#

我的团队为我的客户遇到过这个错误很多次&我知道,在生产服务器中管理它并不容易。在您的情况下错误5120 -当数据库处于只读模式时会出现这个错误。要修复这个错误,您可以使用以下代码

USE [master]
GO
ALTER DATABASE [SQLAuthority] SET READ_WRITE WITH NO_WAIT
GO

修复5120后,您可以处理以修复"databases are in recovery pending state"

mznpcxlj

mznpcxlj3#

恢复挂起-如果SQL Server知道需要运行数据库恢复,但由于某种原因而无法启动,则服务器会将数据库标记为“恢复挂起”状态。这与SUSPECT状态不同,因为不能说恢复将失败-只是恢复尚未启动。
执行以下一组查询:

ALTER DATABASE [DBName] SET EMERGENCY; GO
ALTER DATABASE [DBName] set single_user GO
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS; GO
ALTER DATABASE [DBName] set multi_user GO

注意:您也可以读取DBCC CHECKDB REPAIR ALLOW DATA LOSS上的Microsoft Warning

qnzebej0

qnzebej04#

这可能是由于以下原因:

*权限

在服务列表中找到您的SQL Server示例并双击它,然后选择“登录”选项卡。此log on帐户必须具有足够的权限才能写入临时备份文件夹位置。通过在Windows资源管理器中右键单击临时备份文件夹,选择“属性”,然后导航到“安全”选项卡。请确保SQLServer正在使用的帐户对此文件夹具有显式读/写权限。

*Map的驱动器

请使用完全限定的UNC路径,而不要使用Map的驱动器号。

*缺少域信任

您可以通过确保在两个域之间建立信任关系来解决此问题。您可能还需要使用域之间的传递身份验证来配置SQL Server服务帐户。
有关恢复数据库,请参阅更多here

r1zk6ea1

r1zk6ea15#

执行以下查询以修复处于恢复挂起状态的SQL server database

ALTER DATABASE [DBName] SET EMERGENCY
GO
ALTER DATABASE [DBName] SET single_user
GO
DBCC CHECKDB ([DBName], REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS
GO
ALTER DATABASE [DBName] SET multi_user
GO

EMERGENCY模式会将SQL Server database标示为READ_ONLY、停用记录日志,并只将权限授与系统管理员。此方法可以解决任何技术问题,并将数据库恢复为可存取状态。数据库会自动脱离EMERGENCY模式。

相关问题