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 / 问题 / 44802
Accepted
ooutwire
ooutwire
Asked: 2013-06-19 16:31:34 +0800 CST2013-06-19 16:31:34 +0800 CST 2013-06-19 16:31:34 +0800 CST

我是否需要使用 -f 来修复最大服务器内存设置不足?

  • 772

SQL 服务器版本:

选择@@版本;

/*
微软 SQL Server 2012 - 11.0.2100.60 (X64)
Windows NT 6.1(内部版本 7601:Service Pack 1)上的开发人员版(64 位)
*/

问题:

所以,我在玩最大内存,我不小心将最大内存设置为 128MB,现在,我无法打开与 SQL Server 的连接。当我试图打开一个会话并修复错误时,我得到了这个美妙的弹出窗口。

在此处输入图像描述

为了自救,我决定在 SQL Server 中添加 -f 参数,并反弹服务。

在此处查看更多信息:

服务器内存服务器配置选项

和这里:

数据库引擎服务启动选项

在此处输入图像描述

重新启动服务后,我再次尝试连接。我收到以下消息:

在此处输入图像描述

根据我掌握的关于 -f 标志的信息,这是预料之中的。然后,我能够使用专用管理员连接 (DAC) 打开连接。然后我能够运行 sp_configure 并更改最大内存设置。这是我在进行更改之前在 sp_configure 中看到的内容。运行值似乎又是无穷大(或足够接近)。

在此处输入图像描述

我运行此更新以将最大内存增加到 3GB:

使用大师;
去
sp_configure
      '最大服务器内存 (MB)'
    , 3072;
去
重新配置;
去

然后我删除了 -f 参数并重新启动了 SQL Server。那时,服务器可以在多用户模式下访问,我的最大内存值等于 3GB。这不是我遇到过的最优雅的解决方案;但是,唉,它奏效了;所以我决定在这里分享。

有人有更快更清洁的解决方案吗?

sql-server sql-server-2012
  • 1 1 个回答
  • 2607 Views

1 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2013-06-19T17:55:38+08:002013-06-19T17:55:38+08:00

    我能够通过建立 DAC 连接来重置内存,而无需使用-f启动参数。但是,我必须坚持:

    • 在 128 MB 时,您将在错误日志中看到各种错误:

    由于某些数据库维护或重新配置操作,SQL Server 遇到了 1 次“对象计划”缓存存储(计划缓存的一部分)的缓存存储刷新。

    (对其他缓存重复)

    分配页面失败:FAIL_PAGE_ALLOCATION 1

    详细 DBCC MEMORYSTATUS 转储

    有关审计/扩展事件数据的错误可能丢失

    资源池“内部/默认”中的系统内存不足,无法运行此查询。

    • 在某些情况下,错误将持续到足以简单地关闭 SQL Server(并且不会在日志中记录任何内容)。这在我的实验中发生了两次,并且也可能受到随后重新启动时试图恢复的数据库大小的影响。您应该检查在尝试建立 DAC 连接时收到的任何错误是否实际上源于服务未运行(或者可能在关闭过程中)。
    • 在每种情况下,我都必须转到配置管理器并重新启动服务。在第二次尝试中,我认为在我建立 DAC 连接之前服务已关闭(或正在处理中)。在第三次尝试时,启动时的恢复动作少了很多,我能够建立一个 DAC 查询窗口并调整最大服务器内存,然后当我重新启动时,一切恢复正常。
    • 请注意,我使用的是 11.0.2376,我建议您对可能在生产中运行的构建执行这种边缘案例测试。(这样的事情可能在 RTM 之后已经修复,并且并非所有修复都是公开的。)如果您在生产中运行 RTM,那么我会收回这一点,并建议您重新考虑这种方法。

    如果您发现在您的情况下您也遇到了这种“糟糕,SQL Server 不再运行”的症状,您可能会附加一个调试器并确定 SQL Server 是如何关闭的。

    那么,你能做到-f吗?是的。有没有更清洁的?只有当你真的很幸运。如果您的数据库很大,您更有可能希望有可预测的重启次数 (2),因为恢复过程可能比我的要复杂得多

    当然,更干净的事情是不要使用 GUI 或容易出错的临时脚本来处理最大服务器内存 - 在生产中,您希望使用第二组眼睛并拥有适当的、经过验证的、源代码控制的脚本比“玩弄”更可预测。:-)

    • 3

相关问题

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

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

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

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

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

Sidebar

Stats

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

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

    • 3 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 4 个回答
  • Marko Smith

    授予用户对所有表的访问权限

    • 5 个回答
  • 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
    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
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +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