AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 284085
Accepted
Mr. Roshan
Mr. Roshan
Asked: 2021-01-28 02:12:22 +0800 CST2021-01-28 02:12:22 +0800 CST 2021-01-28 02:12:22 +0800 CST

升级期间,数据库引发异常 9002,严重性 17,状态 1。使用异常编号确定原因

  • 772

我正在尝试在我的 Windows Server 机器上将SQL Server 2014更新到Service Pack 3。从 Windows 更新功能更新后,我无法启动 SQL Server 服务和 SQL Server 代理服务。

服务

错误1

我已经检查了相同的错误日志,它显示以下 2 条消息。

  1. 由于“CHECKPOINT”,数据库“master”的事务日志已满。
  2. 升级期间,数据库引发异常 9002,严重性 17,状态 1。使用异常编号确定原因。
sql-server sharepoint
  • 3 3 个回答
  • 231 Views

3 个回答

  • Voted
  1. J.D.
    2021-01-28T04:44:35+08:002021-01-28T04:44:35+08:00

    您正在运行哪个版本的 SQL Server?此 StackExchange是否有助于解决任何问题?

    异常 9002基本上意味着您的事务日志已满,可能与master数据库有关,与您的第一个错误有关。

    在 SQL 服务脱机的情况下,最快的解决方案可能是在事务日志所在的驱动器中腾出更多可用空间,master以便它可以根据需要充分增长文件,这样您就可以启动服务,然后更好地进行故障排除,例如的备份,master因此它会缩小事务日志文件。您需要释放的空间量很难确定(并且取决于为master数据库设置的增长因子),但可能与其现有日志大小相等(因此如果需要它可以加倍)是一个好的开始。

    在您在评论中发布的其他详细信息之后(顺便说一下,您应该将它们放在原始问题中)我想知道您是否可能有一个损坏的master数据库。无论如何,这个StackExchange 答案可能对您非常有用。特别是如果您可以执行步骤 #3 或 #4:

    1. 将 master 恢复到另一个实例并复制其文件
    2. 重建系统数据库

    但是从 #2 开始(尝试以单用户模式启动实例),然后按顺序执行上述答案。

    • 1
  2. Ronaldo
    2021-01-28T06:04:17+08:002021-01-28T06:04:17+08:00

    尝试在另一个实例上恢复有问题的 master 以调整日志文件的大小:

    1. 重命名原始主数据库.mdf和.ldf文件并复制它们(我们不想让事情变得更糟);

    2. 将复制的文件附加到不同的 SQL Server 实例以检查该数据库的状态:

      USE [master];
      CREATE DATABASE [master2] ON 
      ( FILENAME = N'C:\BackupSQL\master2.mdf' ),
      ( FILENAME = N'C:\BackupSQL\mastlog2.ldf' )
       FOR ATTACH;
      
    3. 调整日志文件的大小:

      ALTER DATABASE master2
      MODIFY FILE (NAME = mastlog, MAXSIZE = UNLIMITED, SIZE = 50MB);
      
    4. 分离master2数据库并将.mdf和.ldf文件粘贴回原始位置(记住保留原始文件.mdf和.ldf 文件使用不同的名称,不要删除它们,因为如果这不起作用,可能需要它们)并重命名新的作为master.mdf和 mastlog.ldf。

    5. 现在尝试启动 SQL Server 服务。

    • 1
  3. Best Answer
    Mr. Roshan
    2021-02-02T01:32:32+08:002021-02-02T01:32:32+08:00

    错误 9002:-

    感谢@Ronaldo和@JD

    我已通过使用以下操作解决了该问题。

    如果主文件事务日志已满,请执行以下步骤:-

    1. 您必须设置另一个运行完全相同的版本和构建的 SQL 实例。

    2. 创建数据库master2

    3. 停止 SQL 服务并转到 .mdf 和 .ldf 文件位置“ C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA ”。

    4. 删除 master2.mdf 和 master2_log.ldf 文件。

    5. 获取与事务日志相关的问题的 master.mdf 和 mastlog.ldf 文件。将这两个文件重命名如下:

      一个。master.mdf -> master2.mdf

      湾。mastlog.ldf -> master2_log.ldf

    6. 再次启动 SQL 服务并从 SSMS 连接到数据库。

    7. 您可以看到 master2 数据库的状态显示为恢复挂起

    常见步骤:-

    1. 使 master2 数据库脱机

    脱机

    1. 从“C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA”中删除或重命名 master2.ldf 文件

    2. 执行以下命令,将再次重建事务日志文件。

    ALTER DATABASE master2 REBUILD LOG ON (NAME= logicalname, FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master2_log.ldf')

    1. 拿master2数据库上线

    2. 执行以下命令

    `ALTER DATABASE master2 SET MULTI_USER`
    
    1. 我们将运行下面的 DBCC CHECKDB 命令,以便在重建 SQL 事务日志文件后检查数据库的物理一致性
    `DBCC CHECKDB (master2)`
    
    1. 在此之后将 master2.mdf 和 master2_Log.ldf 文件替换为您的原始 Sql 服务器实例(将文件重命名回原始名称)并立即尝试连接。
    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve