sqlserver 2016 系统数据库msdb状态恢复挂起,导致数据库无法使用,服务重启过还是不行,这个要怎么办?

sqlserver 2016 系统数据库msdb状态恢复挂起,导致数据库无法使用,服务重启过还是不行,这个要怎么办?,第1张

如果您的SQL Server 2016的msdb数据库恢复状态挂起,您可以尝试以下解决方案:

用命令行或SQL Server Management Studio终止挂起的恢复:

ALTER DATABASE msdb SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE msdb SET MULTI_USER

2. 尝试从备份恢复msdb数据库:

RESTORE DATABASE msdb

FROM DISK = '<backup_file_path>'

WITH REPLACE

3. 如果以上方法都不起作用,您可以考虑重建msdb数据库:

4. 停止SQL Server服务

5. 删除msdb数据库和其相关文件(包括LDF和MDF文件)

6. 启动SQL Server服务,msdb数据库将自动重建。

请注意,在进行任何 *** 作之前,请确保您已经备份了所有重要数据!!!!

model 数据库或 msdb 数据库已损坏(例如由于媒体故障)。

修改了 model 数据库。在这种情况下,重新生成 master 数据库时必须从备份还原 model 数据库,因为重新生成主控实用工具删除并重新创建了 model 数据库。

只能从在 Microsoft SQL Server 2005 服务器上创建的备份还原 model 数据库和 msdb 数据库。不支持从在 Microsoft SQL Server 2000 或早期版本上创建的备份还原这些数据库。

还原 msdb 数据库的注意事项

实用工具删除并重新创建 msdb 之后,需要重新生成 master。这将导致丢失所有计划信息以及备份和还原历史记录。如果 msdb 数据库没有还原且无法访问,SQL Server 代理则无法访问或启动任何以前安排的任务。因此,如果 msdb 包含系统使用的计划或其他数据,则必须在重新生成 master 时还原 msdb。

Meta Data Services 将 msdb 数据库用作默认存储库数据库。Meta Data Services 和 msdb 数据库之间打开的连接会中断 msdb 数据库的还原。若要释放该连接,请重新启动 SQL Server Management Studio,然后还原 msdb 数据库。在完全还原 msdb 数据库之前,请勿选择 Meta Data Services 节点。

不能还原用户正在访问的数据库。如果 SQL Server 代理正在运行,它会访问 msdb 数据库。因此,在还原 msdb 数据库之前,请先停止 SQL Server 代理。

最佳方法:必要时,RESTORE 会断开与用户的连接,但最好预先关闭应用程序。

如果针对 msdb 使用建议的完整恢复模式,则可将数据库还原到最近日志备份的时间。

重要事项:

在安装或升级 SQL Server 时,以及在使用 setup.exe 重新生成系统数据库时,msdb 的恢复模式都自动设置为 SIMPLE。

停止 SQL Server 代理

如何停止 SQL Server 代理(SQL Server 配置管理器)

如何停止 SQL Server 代理(net 命令)

还原数据库

执行数据库完整还原(完整恢复模式)

执行数据库完整还原(简单恢复模式)

请参阅

概念

备份 model 和 msdb 数据库

停止服务

其他资源

备份和还原复制的数据库

帮助和信息

获取 SQL Server 2005 帮助

文档反馈

Microsoft 非常重视您的反馈。若要对该主题分级并将对该主题的反馈发送到文档编写组,请单击一个分级,再单击“发送反馈”。要想获得有关支持方面的问题的协助,请参阅包含在该产品中的技术支持信息。

不好 1

2

3

4

5

出色

若要将反馈通过电子邮件发送给 Microsoft,请单击此处:

�0�8 2006 Microsoft Corporation。保留所有权利。

释放磁盘空间并且重新运行恢复 *** 作,按照下面的步骤收缩日志。

sp_resetstatus 关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。

为从根本上解决这样的问题,你可以按下面的 *** 作配置SQLSERVER 2000:

a.如果不需要恢复到指定的时间点,你可以将数据库的恢复模式配置为简单,这样

UPDATE,DELETE,SELECT就不会记录日志,日志就不会增加的很大:

USE MASTER

GO

ALTER DATABASE DB_NAME SET RECOVERY SIMPLE

b.如果你的恢复模式是全部,你一定要配置日志字段收缩:

USE MASTER

GO

sp_dboption 'databasename','trunc. log on chkpt.',true

sp_dboption 'databasename','autoshrink',true

c.通过每日备份将日志收缩:

BACKUP DATABASE DATABASE_NAME TO BACKUP_DEVICES

BACKUP LOG DATABASE_NAME TO LOG_DEVICES

OR

BACKUP LOG DATABASE_NAME with truncate_only

**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志并没有收缩!

d.每天在备份数据库完成之后,重新启动MS SQLSERVER SERVICE.

USE DATABASE_NAME

go

DBCC SHRINKFILE(2,truncateonly)

**检查日志的容量:DBCC SQLPERF (LOGSPACE) 这时日志已经收缩!

e.手动快速收缩日志:

/ *run below script,you will shrink you database log files

immediately, in my experience,you need to run the script for 3 or

4 minutes before stopping it manually */

use databasename

dbcc shrinkfile(2,notruncate)

dbcc shrinkfile(2,truncateonly)

create table t1(char1 char(4000))

go

declare @i int

select @i=0

while(1=1)

begin

while(@i<100)

begin

INSERT INTO T1 VALUES ('A')

SELECT @I=@I+1

END

TRUNCATE table T1

BACKUP LOG youdatabasename with truncate_only

end

GO

注意 只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用

sp_resetstatus。否则,可能会损坏数据库。

由于该过程修改了系统表,系统管理员必须在运行 sp_resetstatus这个过程前,启用系统表更新。要

启 用更新,使用下面的过程:

USE master

GO

sp_configure 'allow updates', 1

GO

RECONFIGURE WITH OVERRIDE

GO

过程创建后,立即禁用系统表更新:

sp_configure 'allow updates', 0

GO

RECONFIGURE WITH OVERRIDE

GO

只有系统管理员才能执行 sp_resetstatus。执行该过程后,立即关闭 SQL Server。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10013759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存