0

问题:

在我们的一台服务器中备份失败,并显示以下消息:(备份是通过 Netbackup 进行的)

Could not allocate space for object 'dbo.backupfile'.'PK__backupfi__57D1800AC4FFEEA3' 
in database 'msdb' because the 'PRIMARY' filegroup is full. Create disk space by deleting 
unneeded files, dropping objects in the filegroup, adding additional files to the 
filegroup, or setting autogrowth on for existing files in the filegroup.>
    DBMS MSG - SQL Message <3009><[Microsoft][ODBC SQL Server Driver][SQL Server]Could not 
insert a backup or restore history/detail record in the msdb database. This may indicate a 
problem with the msdb database.

检查时,我可以看到 msdb 的主数据文件所在的挂载驱动器已满(总大小:99GB,可用空间:0 字节)。该驱动器没有任何不需要的文件,我可以删除这些文件并获得一些简单的磁盘空间。所以我查看了驱动器,发现了一个 6GB 大小的数据库日志文件,其中超过 5.5GB 是空闲的。我认为缩小它会在驱动器中释放相当多的空间并暂时解决问题。但是当我尝试缩小日志文件时,我收到一条错误消息,说“它已被恢复标记为可疑”。担心最坏的情况,我在对象资源管理器和宾果游戏中刷新了数据库列表..!!就在那里,标记为“可疑”</p>

4

3 回答 3

2

解决方案:

我检查了服务器中的其他驱动器,发现一个有足够的可用空间。所以我的下一个尝试是分离数据库(比如'XYZ'),将其日志文件移动到另一个驱动器,然后附加它。这将在驱动器中释放足够的空间,并让数据库从可疑模式中恢复。所以我尝试分离数据库,但没有奏效。

Cannot detach a suspect database. It must be repaired or dropped. Cannot be opened as the DB is in Suspect mode

所以我试图把它带到单用户模式:执行脚本将数据库置于单用户模式

USE master;
GO
ALTER DATABASE [XYZ]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

将数据库设置为脱机。

-- Take the Database Offline
ALTER DATABASE [XYZ] SET OFFLINE WITH
ROLLBACK IMMEDIATE
GO

现在我能够成功分离数据库。分离后,我将日志文件复制到另一个有足够可用空间的驱动器。然后我尝试将数据库连接回来。但是在附加时,它给出了以下错误消息:

Error: 5123 CREATE FILE encountered operating system error 5A(Access denied.)

为了解决它,以下是我执行的步骤:

  1. 右键单击 .mdf 文件 -> 属性
  2. 在“安全”Tad 下,按继续
  3. 单击“添加”以将您包括在“组或用户名”中
  4. 在出现的弹出窗口中为您提供登录 ID,“检查名称”和“确定”</li>
  5. 添加登录名后,单击它,然后在下面的框中(用户权限),选中允许用户的“完全控制”。选中“完全控制”非常重要,因为默认情况下用户将只有“读取”和“读取和执行”权限。如果您尝试仅使用这些默认权限进行附加,您将再次收到拒绝访问错误。

在此之后,我能够成功附加数据库,并且发现其状态为“正常”。

希望这会对某人有所帮助:)

于 2014-07-09T11:30:30.267 回答
0

尝试使用 master 数据库 它将重置您可以使用的数据库的状态。

EXEC sp_resetstatus your_db_name
ALTER DATABASE your_db_name SET EMERGENCY
DBCC checkdb (your_db_name)
ALTER database your_db_name SET SINGLE_USER with ROLLBACK IMMEDIATE
DBCC CHECKDB (your_db_name, REPAIR_ALLOW_DATA_LOSS)
Alter database your_db_name SET MULTI_USER
于 2021-10-16T08:06:37.283 回答
0

在这种情况下,切勿分离数据库。我还建议不要使用修复允许数据丢失选项运行 DBCC CHECKDB,因为您可能会丢失重要数据。您可以查看此参考:https ://community.spiceworks.com/topic/1078473-sql-server-database-in-suspect-mode

于 2021-08-09T06:34:52.413 回答