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 / 问题 / 235330
Accepted
Learning_DBAdmin
Learning_DBAdmin
Asked: 2019-04-21 23:47:05 +0800 CST2019-04-21 23:47:05 +0800 CST 2019-04-21 23:47:05 +0800 CST

数据库 tempdb 的日志不可用

  • 772

几个月以来我一直在努力解决这个问题,我说这不是数据库问题,并将此案例分配给存储和操作系统团队,然后他们将其分配给我。这个问题反复发生,没有任何明确的发生模式。

我检查了这里提出的相同问题,我可以说这不是数据库损坏的问题,因为我正在使用 Ola Hallengren 的脚本进行维护工作,并且每周对用户和系统数据库进行数据库完整性检查(checkdb),并且没有报告任何问题在那里面。

也为类似的问题访问了第二个链接,并且可以确认 tempdb 处于简单恢复状态。

我为数据和日志添加了一个额外的文件,这样如果一个文件不可用,另一个文件仍然可以访问,但是后来我知道 tempdb 的访问是顺序的,所以只有在第一个文件满时才会转到第二个文件:

临时数据库属性

每次发生此问题时,我都会在 Windows 应用程序日志中看到另一个错误,如下所示:

SQLServerLogMgr::LogWriter: Operating system error 170(The requested resource is in use.) encountered.

存储团队已将这些文件排除在防病毒扫描之外。

这里要注意的一件事 - 我检查了其他系统数据库及其文件位置,可以看到对于 master 和 model,数据和日志文件在同一个驱动器(E 驱动器)中,而对于 tempdb 和 msdb,数据在 E 驱动器和日志中文件在 G 盘,不知道这是否相关。

当作业触发或任何事件被触发时,是否有任何检查系统数据库的顺序?如果它是那个驱动器的问题,那么 msdb 也在同一个驱动器上。

这是一个集群服务器,数据库驱动器在两台服务器中共享,服务器用于共享点应用程序。

Server Version: Windows Server 2012 Standard
SQL Server: Microsoft SQL Server 2012 (SP4-GDR) (KB4057116) - 11.0.7462.6 (X64) 
    Jan  5 2018 22:11:56 
    Copyright (c) Microsoft Corporation
    Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)

我们剩下的唯一选择是重新启动服务或故障转移 - 这样做听起来不太好。

感谢您在这方面的任何帮助。

sql-server tempdb
  • 1 1 个回答
  • 1873 Views

1 个回答

  • Voted
  1. Best Answer
    Sean Gallardy
    2019-04-22T04:58:56+08:002019-04-22T04:58:56+08:00

    SQLServerLogMgr::LogWriter:遇到操作系统错误 170(请求的资源正在使用中。)。

    是的,这是从日志写入器遇到的操作系统错误中冒出来的。在这种情况下,操作系统错误 170 是资源正在使用中。问题出在 SQL Server 之外(除非将任何错误的第 3 方 DLL 加载到地址空间中),这真是太糟糕了。

    通常,当我看到它是防病毒、主机保护、碎片整理软件、备份软件等时,当驱动器在后端未正确设置时,最终会在文件或集群环境中保持长时间锁定。

    存储团队已将这些文件排除在防病毒扫描之外。

    不想粗鲁,但我不买它。告诉他们你想要证据。此外,仅仅因为文件被“排除”并不意味着防病毒软件不会查看它,它仍然会查看它——只是在大多数情况下不会进行所有深入检查。

    怎么办?

    我会首先检查流氓应用程序是否正在尝试做某事。问题是这可能在任何时候发生,并且有问题的(如果有的话)应用程序可能会持有锁很短的时间或很长一段时间——我们不知道。

    快速执行此操作的方法之一是在有问题的文件上使用sysinternals 处理应用程序。由于此错误在 SQL Server 中有一个错误代码,因此您应该能够创建一个代理警报来执行一个作业,该作业调用一个小批处理文件或 PowerShell 或您创建的任何东西来对文件运行句柄。这应该有助于尝试快速获取信息(但可能不够快)。

    另一种解决方法,特别是如果您可以相当频繁或轻松地重现它,是运行进程监视器(procmon),它是另一种 sysinternals 工具,用于捕获除 SQL Server 之外的文件的内容。

    • 7

相关问题

  • 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