问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQLERVER的tempdb库突然暴增(已经暴增了),怎么排查暴增的原因?

发布网友 发布时间:2022-04-26 05:33

我来回答

2个回答

懂视网 时间:2022-04-08 23:30


如果SQL Server 是安装在默认路径,那么 tempdb.mdf 和 templog.ldf 文件在以下路径:
“C:Program FilesMicrosoft SQL ServerMSSQLData”
如果硬盘上该分区的空间不足以满足该临时文件的增长需求,那么使用以下命令转移到其它分区:
--移动主数据文件
ALTER DATABASE tempdb MODIFY FILE
( NAME=‘tempdev‘,
FILENAME =‘d: empdb.mdf‘)
--移动主日志文件
ALTER DATABASE tempdb MODIFY FILE
( NAME=‘templog‘,
FILENAME =‘d: emplog.ldf‘)
如何收缩tempdb数据库 - 以下是来自微软官方的完整解析:
本文讨论将 tempdb 数据库收缩为小于其上次配置的大小的三种方法。第一种方法使您可以完全控制 tempdb 文件的大小,但它要求您重新启动 SQL Server。第二种方法将 tempdb 作为整体来收缩,但它具有某些限制,可能包括重新启动 SQL Server。第三种方法允许您收缩 tempdb 中的单个文件。最后两种方法要求在收缩操作过程中在 tempdb 数据库中不发生任何活动。
注意:如果您使用的是 SQL Server 2005,这些方法仍适用。不过,您应该使用 SQL Server Management Studio 而不是企业管理器和查询分析器来执行这些操作。
Tempdb 信息
tempdb 是一个临时工作区。除其他用途外,SQL Server 还将 tempdb 用于:
•显式创建的临时表的存储。
•保存在查询处理和排序过程中创建的中间结果的工作表。
•具体化的静态光标。
SQL Server 在 tempdb 事务日志中记录的信息只足够用于回滚事务,而不足以用于在数据库故障恢复过程中重新执行事务。这一特点提高了 tempdb 中 INSERT 语句的性能。另外,由于每次重新启动 SQL Server 时都会重新创建 tempdb,无需记录用于重新执行任何事务的信息。因此,没有任何要前滚或回滚的事务。当 SQL Server 启动时,通过使用 model 数据库的副本重新创建 tempdb,并将其重置为上次配置的大小。
默认情况下,tempdb 数据库配置为根据需要自动增长;因此,此数据库可能最终增长到大于所需的大小。简单地重新启动 SQL Server 会将 tempdb 的大小重置为上次配置的大小。配置的大小是用文件大小更改操作(如带有 MODIFY FILE 选项的 ALTER DATABASE 或者 DBCC SHRINKFILE 语句)设置的上次显式大小。本文说明您可以用来将 tempdb 收缩到小于其配置的大小的三种方法。


收缩 Tempdb 的方法 1(此方法我尝试后很有效!)
此方法要求您重新启动 SQL Server。
1.停止 SQL Server。打开命令提示符,然后键入以下命令启动 SQL Server:
sqlservr -c -f
-c 和 -f 参数使 SQL Server 以最小配置模式启动,让数据文件的 tempdb 大小为 1 MB,日志文件的 tempdb 为 0.5 MB。
注意:如果使用 SQL Server 命名实例,必须切换到适当的文件夹 (Program FilesMicrosoft SQL ServerMSSQL$instance nameBinn),并使用 -s 开关 (-s%instance_name%)。
2.用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令:
  ALTER DATABASE tempdb MODIFY FILE
  (NAME = ‘tempdev‘, SIZE = target_size_in_MB)
  --Desired target size for the data file
  ALTER DATABASE tempdb MODIFY FILE
  (NAME = ‘templog‘, SIZE = target_size_in_MB)
  --Desired target size for the log file
   3.通过在命令提示符窗口中按 Ctrl-C 停止 SQL Server,将 SQL Server 作为服务重新启动,然后验证 Tempdb.mdf 和 Templog.ldf 文件的大小。
此方法的局限是它只能对默认的 tempdb 逻辑文件 tempdev 和 templog 进行操作。如果将其他文件添加到了 tempdb,您可以在将 SQL Server 作为服务重新启动后收缩它们。在启动过程中将重新创建所有 tempdb 文件;因此,它们是空的并可删除。要删除 tempdb 中的其他文件,请使用带有 REMOVE FILE 选项的 ALTER DATABASE 命令。


收缩 Tempdb 的方法 2
使用 DBCC SHRINKDATABASE 命令将 tempdb 数据库作为整体收缩。DBCC SHRINKDATABASE 接收参数 target_percent,该参数是数据库收缩后数据库文件中剩余可用空间的所需百分比。如果使用 DBCC SHRINKDATABASE,可能必须重新启动 SQL Server。
重要说明:如果运行 DBCC SHRINKDATABASE,则 tempdb 数据库不能正在发生其他活动。要确保在运行 DBCC SHRINKDATABASE 时其他进程无法使用 tempdb,必须以单用户模式启动 SQL Server。有关更多信息,请参考本文的在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。
1.通过使用 sp_spaceused 存储过程确定 tempdb 中当前使用的空间。然后,计算剩余可用空间的百分比,它将用作 DBCC SHRINKDATABASE 的参数;该计算是基于所需数据库大小进行的。
注意:在某些情况下,您可能必须执行 sp_spaceused @updateusage=true 来重新计算使用的空间和获得更新的报告。有关 sp_spaceused 存储过程的更多信息,请参考 SQL Server 联机丛书。
请考虑以下示例:
假定
tempdb
 有两个文件:主数据文件 (Tempdb.mdf) 和日志文件 (Tempdb.ldf),其大小分别为 100 MB 和 30 MB。假定
sp_spaceused
 报告主数据文件包含 60 MB 的数据。还假定您要将主数据文件收缩到 80 MB。计算收缩后剩余可用空间的所需百分比,即 80 MB - 60 MB = 20 MB。现在,用 20 MB 除以 80 MB = 25%,这就是您的 target_percent。事务日志文件将据此进行收缩,从而在数据库收缩后剩下 25% 即 20 MB 的可用空间。
2.用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令:
  dbcc shrinkdatabase (tempdb, ‘target percent‘)
  -- This command shrinks the tempdb database as a whole
   对 tempdb 数据库使用 DBCC SHRINKDATABASE 命令具有局限性。数据文件和日志文件的目标大小不能小于创建数据库时指定的大小,也不能小于用文件大小更改操作(如带有 MODIFY FILE 选项的 ALTER DATABASE 命令或 DBCC SHRINKFILE 命令)显式设置的上次大小。DBCC SHRINKDATABASE 的另一个限制是 target_percentage 参数的计算和它对当前使用的空间的依赖。
 
收缩 Tempdb 的方法 3
使用命令 DBCC SHRINKFILE 收缩单个 tempdb 文件。DBCC SHRINKFILE 比 DBCC SHRINKDATABASE 提供更多的灵活性,因为您可以对单个数据库文件使用它而不必影响属于同一数据库的其他文件。DBCC SHRINKFILE 接收 target size 参数,这是所需的数据库文件的最终大小。
重要说明:必须在 tempdb 数据库不发生任何活动时运行 DBCC SHRINKFILE 命令。要确保在执行 DBCC SHRINKFILE 时其他进程不能使用 tempdb,必须以单用户模式重新启动 SQL Server。有关 DBCC SHRINKFILE 的更多信息,请参见本文中在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。
1.确定主数据文件 (tempdb.mdf)、日志文件 (templog.ldf) 和/或添加到 tempdb 的其他文件的所需大小。确保在这些文件中使用的空间小于或等于所需的目标大小。
2.用查询分析器连接到 SQL Server,然后为需要收缩的特定数据库运行下列 Transact-SQL 命令:
  use tempdb
  go
  dbcc shrinkfile (tempdev, ‘target size in MB‘)
  go
  -- this command shrinks the primary data file
  dbcc shrinkfile (templog, ‘target size in MB‘)
  go
  -- this command shrinks the log file, look at the last paragraph.
   DBCC SHRINKFILE 的一个优点是它可以将文件大小减小到小于其原始大小。您可以对任何数据文件或日志文件执行 DBCC SHRINKFILE。DBCC SHRINKFILE 的一个局限是您无法使数据库小于 model 数据库的大小。
在 SQL Server 7.0 中,事务日志收缩是一个推迟操作,您必须执行日志截断和备份,以帮助进行数据库中的收缩操作。但是,默认情况下,tempdb 将 trunc log on chkpt 选项设置为“打开”(ON);这样,您就无需为该数据库执行日志截断。有关如何在 SQL Server 7.0 中收缩数据库事务日志的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256650
(http://support.microsoft.com/kb/256650/ )
INF:如何收缩 SQL Server 7.0 事务日志
在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果
当正在使用 tempdb 时,如果您尝试通过使用 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 命令收缩它,可能会收到与以下类型相似的多个一致性错误,并且收缩操作可能失败:
Server:Msg 2501, Level 16, State 1, Line 1 Could not find table named ‘1525580473‘.Check sysobjects. - 或 -
Server:Msg 8909, Level 16, State 1, Line 0 Table Corrupt:Object ID 1, index ID 0, page ID %S_PGID.The PageId in the page header = %S_PGID. 尽管错误 2501 可能不表示 tempdb 中的任何损坏,但它会导致收缩操作失败。与其不同,错误 8909 可能表示 tempdb 数据库中的损坏。应重新启动 SQL Server 来重新创建 tempdb 并清除一致性错误。但是,请记住像错误 8909 这样的物理数据损坏可能有其他原因,这包括输入/输出子系统问题。

 

收缩TempDB的办法(转载)

标签:

热心网友 时间:2022-04-08 20:38

Tempdb 信息
tempdb 是一个临时工作区。除其他用途外,SQL Server 还将 tempdb 用于:
• 显式创建的临时表的存储。
• 保存在查询处理和排序过程中创建的中间结果的工作表。
• 具体化的静态光标。
SQL Server 在 tempdb 事务日志中记录的信息只足够用于回滚事务,而不足以用于在数据库故障恢复过程中重新执行事务。这一特点提高了 tempdb 中 INSERT 语句的性能。另外,由于每次重新启动 SQL Server 时都会重新创建 tempdb,无需记录用于重新执行任何事务的信息。因此,没有任何要前滚或回滚的事务。当 SQL Server 启动时,通过使用 model 数据库的副本重新创建 tempdb,并将其重置为上次配置的大小。

默认情况下,tempdb 数据库配置为根据需要自动增长;因此,此数据库可能最终增长到大于所需的大小。简单地重新启动 SQL Server 会将 tempdb 的大小重置为上次配置的大小。配置的大小是用文件大小更改操作(如带有 MODIFY FILE 选项的 ALTER DATABASE 或者 DBCC SHRINKFILE 语句)设置的上次显式大小。本文说明您可以用来将 tempdb 收缩到小于其配置的大小的三种方法。

收缩 Tempdb 的方法 1
此方法要求您重新启动 SQL Server。

1. 停止 SQL Server。打开命令提示符,然后键入以下命令启动 SQL Server:

sqlservr -c -f

-c 和 -f 参数使 SQL Server 以最小配置模式启动,让数据文件的 tempdb 大小为 1 MB,日志文件的 tempdb 为 0.5 MB。

注意:如果使用 SQL Server 命名实例,必须切换到适当的文件夹 (Program Files/Microsoft SQL Server/MSSQL$instance name/Binn),并使用 -s 开关 (-s%instance_name%)。
2. 用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令: ALTER DATABASE tempdb MODIFY FILE
(NAME = 'tempdev', SIZE = target_size_in_MB)
--Desired target size for the data file

ALTER DATABASE tempdb MODIFY FILE
(NAME = 'templog', SIZE = target_size_in_MB)
--Desired target size for the log file

3. 通过在命令提示符窗口中按 Ctrl-C 停止 SQL Server,将 SQL Server 作为服务重新启动,然后验证 Tempdb.mdf 和 Templog.ldf 文件的大小。
此方法的局限是它只能对默认的 tempdb 逻辑文件 tempdev 和 templog 进行操作。如果将其他文件添加到了 tempdb,您可以在将 SQL Server 作为服务重新启动后收缩它们。在启动过程中将重新创建所有 tempdb 文件;因此,它们是空的并可删除。要删除 tempdb 中的其他文件,请使用带有 REMOVE FILE 选项的 ALTER DATABASE 命令。

收缩 Tempdb 的方法 2
使用 DBCC SHRINKDATABASE 命令将 tempdb 数据库作为整体收缩。DBCC SHRINKDATABASE 接收参数 target_percent,该参数是数据库收缩后数据库文件中剩余可用空间的所需百分比。如果使用 DBCC SHRINKDATABASE,可能必须重新启动 SQL Server。

重要说明:如果运行 DBCC SHRINKDATABASE,则 tempdb 数据库不能正在发生其他活动。要确保在运行 DBCC SHRINKDATABASE 时其他进程无法使用tempdb,必须以单用户模式启动 SQL Server。有关更多信息,请参考本文的在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。
1. 通过使用 sp_spaceused 存储过程确定 tempdb 中当前使用的空间。然后,计算剩余可用空间的百分比,它将用作 DBCC SHRINKDATABASE 的参数;该计算是基于所需数据库大小进行的。

注意:在某些情况下,您可能必须执行 sp_spaceused @updateusage=true 来重新计算使用的空间和获得更新的报告。有关 sp_spaceused 存储过程的更多信息,请参考 SQL Server 联机丛书。

请考虑以下示例:
假定 tempdb 有两个文件:主数据文件 (Tempdb.mdf) 和日志文件 (Tempdb.ldf),其大小分别为 100 MB 和 30 MB。假定 sp_spaceused 报告主数据文件包含 60 MB 的数据。还假定您要将主数据文件收缩到 80 MB。计算收缩后剩余可用空间的所需百分比,即 80 MB - 60 MB = 20 MB。现在,用 20 MB 除以 80 MB = 25%,这就是您的 target_percent。事务日志文件将据此进行收缩,从而在数据库收缩后剩下 25% 即 20 MB 的可用空间。

2. 用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令: dbcc shrinkdatabase (tempdb, 'target percent')
-- This command shrinks the tempdb database as a whole

对 tempdb 数据库使用 DBCC SHRINKDATABASE 命令具有局限性。数据文件和日志文件的目标大小不能小于创建数据库时指定的大小,也不能小于用文件大小更改操作(如带有 MODIFY FILE 选项的 ALTER DATABASE 命令或 DBCC SHRINKFILE 命令)显式设置的上次大小。DBCC SHRINKDATABASE 的另一个*是target_percentage 参数的计算和它对当前使用的空间的依赖。追问首先,非常感谢你的回答,但是我是想要怎么快速找出暴增的原因

SQLERVER的tempdb库突然暴增(已经暴增了),怎么排查暴增的原因?

使用 DBCC SHRINKDATABASE 命令将 tempdb 数据库作为整体收缩。DBCC SHRINKDATABASE 接收参数 target_percent,该参数是数据库收缩后数据库文件中剩余可用空间的所需百分比。如果使用 DBCC SHRINKDATABASE,可能必须重新启动 SQL Server。重要说明:如果运行 DBCC SHRINKDATABASE,则 tempdb 数据库不能正在发生...

体重忽然暴增什么原因 燃气费怎么突然暴增 体重瞬间暴增的原因 体重暴增是什么原因 短时间内体重暴增的原因 天然气用量突然一个月暴增 用电突然暴增 突然食欲暴增 发现用电量突然暴增
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎样抠取J-net上面KAT-TUN的视频?例如:http://www.johnnys-net.jp/j... 网页视频用什么软件可以连声音一起抠下来?急! 镶嵌在网页里的视频怎么抠出下载,http://edu.canmay.net/app/course/v... ...纪检委来公司查是不是党员,想知道会怎么样? 求一部小时候的动画片,我是90后,好像是主人公黑白的,是狗啊还是啥 一本和点拨哪个好 然气热水器用一个开关可以调节水温吗 ...他们真的好像啊。。。有没有报道他们相象的传闻? 极道鲜师 Ⅰ和Ⅱ的演员名单 ...人没有结果?还有小栗旬演的谁啊?那个黑崎是谁演的? 手脚筋被砍断了还能接好吗? 黑旋风李逵的下场:被人挑断手脚筋脉,最终被千刀万剐,这是为何? 请问山东省被人把手筋脚筋砍断的凶手找到了吗? 燕子李三被挑断脚筋是哪一集 有一部电影,讲的是有个女的被挑断脚筋囚禁起来,不知道叫什么名字。 美国变态医生挑断人脚筋囚禁折磨人的电影叫什么名字 冯宝宝脚筋被断哪一集? 女主嫁人冲喜,被婆婆砍断脚筋,后被男主带走的一部电影,以前电影频道放过 双胞胎女孩被爷爷砍断脚筋 爷爷对孙女下毒手的真相 20年前一部什么很厉害的刀专挑断人脚筋的电视剧? 砍断别人脚筋算轻伤还是重伤怎么判刑 鄢颇因李小冉被砍断脚筋,血色的恋爱背后有怎样的隐情? 继爷爷砍伤孙女脚筋,爷爷怎么处理的 被人砍断脚筋 故事大王的节目表 重庆“后爷爷”挥刀砍断双胞胎孙女脚筋后投案自首,他受到了什么惩罚? 被砍断脚筋的双胞胎那个爷爷怎么判刑? SBS和SBC有什么区别? 正确吃卡宾达树皮吃法有哪几种? 安哥拉树皮泡酒喝后晚上睡觉流虚汗是怎么回事? tempdb数据库的作用是什么 把人砍伤了,腿筋脚筋全都砍断了。这个会判什么罪。。。。比如梅婷的前夫被砍的案件。 tempdb数据库的作用是什么? SQL SERVER 索引的工作原理 sql server数据库怎么写日志 SQL Server日志作用以及为什么先写日志后写数据? SQL Server ReportServerTempDB异常的可能原因及解决或处理办法?_百度... 如何监测谁用了SQL Server的Tempdb空间 sql server 2000 tempdb日志已满有什么影响? 请教查看SQL SERVER操作日志详细记录的相关推荐 SQL数据库中日志收缩、截断等等是什么 sql server tempdb 1天40g日志 怎么办 一体机与投影仪的区别 实物投影议和电视机连接可用吗 投影仪一体机和接机顶盒的那个好? 多媒体教学一体机展示台实物投影没办法手触屏幕放大 怎么解决 白板一体机中实物投影仪中包含什么物理知识?用到凸透镜成像规律了吗? 会议触摸一体机比投影仪好在哪儿 触摸一体机好还是投影仪好? 电脑一体机和电脑投影机哪个对眼好