打开SQL Server 2008 R2提示“无法打开数据库 'msdb' SQL Server 错误945”的大致说明
[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!
有网友在群里发了一张图,询问解决办法,错误为“由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库msdb。有关详细信息,请参阅 SQL Server 错误日志。 (Microsoft SQL Server错误945)”如下图所示
但是SQL Server编辑框里还可以照常选择其他账套,如下图所示
打开SQL Server 2008 R2提示“无法打开数据库 'msdb' SQL Server 错误945”的大致说明
看SQL Server错误第一段提示“由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 'msdb'。”显示内存或磁盘不足,再看第二段“ SQL Server,错误: 945”,其实这个945错误代码是溢出内存不足造成的,这么看还是内存不足造成的,出现这种的错误,不乏有权限不足造成的,但这次的问题主要看打开数据库版本下面的提示“正在展开”,这种就是无法打开了,还一种就是数据库错误或质疑造成的;
一、在Server配置管理器->中,Server属性->登录( -> )选择“此帐户”,并使用帐户名“系统管理员账户”及其密码登录尝试一下;
二、给予安装路径“X:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA或X:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA”下给予“SQL运行用户”与 “Everyone”,然后勾选 “允许” 列下的全部权限,如 “完全控制”“读取”“写入” 等;
三、给予sa用户对'msdb'库“db_owner与public”角色权限;
数据库角色说明:
public
--public 角色是一个特殊的数据库角色,每个数据库用户都属于它。public 角色:
--捕获数据库中用户的所有默认权限。
--无法将用户、组或角色指派给它,因为默认情况下它们即属于该角色。
--含在每个数据库中,包括 master、msdb、tempdb、model 和所有用户数据库。
--无法除去。db_owner
--进行所有数据库角色的活动,以及数据库中的其它维护和配置活动。
--该角色的权限跨越所有其它固定数据库角色。db_accessadmin
--在数据库中添加或删除 Windows NT 4.0 或 Windows 2000 组和用户以及 SQL Server 用户。db_datareader
--查看来自数据库中所有用户表的全部数据。db_datawriter
--添加、更改或删除来自数据库中所有用户表的数据db_ddladmin
--添加、修改或除去数据库中的对象(运行所有 DDL)db_securityadmin
--管理 SQL Server 2000 数据库角色的角色和成员,并管理数据库中的语句和对象权限db_backupoperator
--有备份数据库的权限db_denydatareader
--拒绝选择数据库数据的权限db_denydatawriter
--拒绝更改数据库数据的权限
四、MSDB置疑状态修复
USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='msdb' Go sp_dboption 'msdb', 'single user', 'true' Go DBCC CHECKDB('msdb') Go update sysdatabases set status =28 where name='msdb' Go sp_configure 'allow updates', 0 reconfigure with override Go sp_dboption 'msdb', 'single user', 'false' Go
五、从另一台装有同样SQL SERVER数据库并且能正常打开的服务器或者自己的电脑上,找到Msdb的两个数据文件MSDBData.mdf和MSDBLog.ldf复制过来,替换一下;
1、停掉sql服务,备份原来的“MSDBData.mdf和MSDBLog.ldf”并删掉原来的;
2、把装有同版本SQL Server数据库并正常的电脑,找到MSDBData.mdf和MSDBLog.ldf复制到自己电脑“C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA下或C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA”路径下,并启动,基本就可以成功!
写在后面:'msdb'数据也是存在一些数据的,不过能打开也比打不开的强,都注意备份最好!
延伸阅读:msdb数据库质疑或可疑的说明
显示“msdb”数据库可疑或置疑的话,如下图所示
找同版本正常的SQL Server数据库来替换,就会变成“单个用户”的显示,如下图所示
执行下面的SQL语句就可以变成正常;
alter database msdb set multi_user
问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信
所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

