SQL Server 2008 TempDB数据库日志已满

时间:2021-12-31 17:11:43
网上查了下 收缩数据库就行了 , 但是有很大的疑问望解答
他们告诉我只要重启服务就行,我按着他们的做确实可以 , why? 不应该啊 !
我用 select * from sys.database_files 查询出来 maxsize为256G   实际size为500M 磁盘容量不到256G 但是提示出满的时候磁盘并没有被占满  我观察了一段时间发现tempdb的日志的大小一直固定为3.9G 从来没有动过  数据库中查询出来还是500M 按道理来说是不会出现这种情况的,而且 就算出现这种情况 跟我重启服务应该是没有任何关系的 ,可是重启了之后 就是没报错了,
另:最大服务器内存改小是否会对查询速度有影响

22 个解决方案

#1



-- 看看什么情况

sp_helpdb tempdb
 

#2


引用 1 楼 wmxcn2000 的回复:

-- 看看什么情况

sp_helpdb tempdb
 


用这个查出来 结果为25311.69MB 算24.7G  其他的好像没什么特别的
然后下面有 8行   1 2行没有动过  一直都是3.9 下面的 总size加起来就等于上面的 24.7G   除了第二个日志有限上限为256G  其他均无限制增长上限   SQL Server 2008 TempDB数据库日志已满不知道下面那6行是干啥的,正常情况不是只有2行吗 

#3


讲道理,这个跟磁盘空间应该是没有关系的,磁盘空间充足不存在爆满现象,而增长上限均未限制  
重启服务器最大的变化就是内存清掉了一些,会不会跟内存有关 64G的内存 按道理来 平常使用量基本稳定在54G左右 大部分为SQL Server所占  网上查了一下正常64G 实际可使用量不超过59G 所以猜想是不是跟内存有关 SQL Server 2008 TempDB数据库日志已满不过好像日志满了跟内存应该没有半毛钱关系啊

#4


既然自己分析不出来,就把运行结果帖出来,别在那里自说自话。
现在只能靠猜:是不是文件是按固定大小增长的,而增长后的大小会超过硬盘容量?

#5


SQL Server 2008 TempDB数据库日志已满公司电脑不能连外网 插USB  截图 ,弄了半天才弄出来

#6



tempdb   25311.69 MB sa 2 12 12 2016  Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=655, Collation=Chinese_PRC_CI_AS, SQLSortOrder=0, IsAutoCreateStatistics, IsAutoUpdateStatistics 100



tempdev 1 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\tempdb.mdf PRIMARY 4096000 KB Unlimited 102400 KB data only
templog 2 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\templog.ldf NULL 4096000 KB 2147483648 KB 102400 KB log only
tempdev1 3 E:\TempDB\tempdev1.ndf PRIMARY 940032 KB Unlimited 0 KB data only
tempdev2 4 E:\TempDB\tempdev2.ndf PRIMARY 1595648 KB Unlimited 0 KB data only
tempdev3 5 E:\TempDB\tempdev3.ndf PRIMARY 3793024 KB Unlimited 0 KB data only
tempdev4 6 E:\TempDB\tempdev4.ndf PRIMARY 3928768 KB Unlimited 0 KB data only
tempdev5 7 E:\TempDB\tempdev5.ndf PRIMARY 3764672 KB Unlimited 10240 KB data only
tempdev6 8 E:\TempDB\tempdev6.ndf PRIMARY 3705024 KB Unlimited 102400 KB data only

#7


引用 4 楼 Tiger_Zhao 的回复:
既然自己分析不出来,就把运行结果帖出来,别在那里自说自话。
现在只能靠猜:是不是文件是按固定大小增长的,而增长后的大小会超过硬盘容量?

按道理来说是不会这样的,因为硬盘容量可以说十分充裕   增长量最大也不过500M

#8


你是FAT32的文件系统吧。
没有一个文件是超4G的。
而 templog.ldf 当前是 3.9G,再增 100M 就超4G了。

换用 NTFS 文件系统。
否则文件自动增长没意义,对现场数据库来说,4G文件太小了。

#9


引用 8 楼 Tiger_Zhao 的回复:
你是FAT32的文件系统吧。
没有一个文件是超4G的。
而 templog.ldf 当前是 3.9G,再增 100M 就超4G了。

换用 NTFS 文件系统。
否则文件自动增长没意义,对现场数据库来说,4G文件太小了。

每个磁盘文件系统全是NTFS 

#10


既然会经常性报“日志已满”错误,在磁盘容量够的情况下直接分配足够的空间。
比如手工指定 templog.ldf 的大小为 20G,重启之后默认大小就是 20G,省去了不停增长的开销。

#11


主要问题还是你的磁盘空间不大,一般tempdb已满,,都是磁盘空间不足导致的。

#12


引用 11 楼 ren6370 的回复:
主要问题还是你的磁盘空间不大,一般tempdb已满,,都是磁盘空间不足导致的。


100G的空间应该是够用了吧

#13


引用 10 楼 Tiger_Zhao 的回复:
既然会经常性报“日志已满”错误,在磁盘容量够的情况下直接分配足够的空间。
比如手工指定 templog.ldf 的大小为 20G,重启之后默认大小就是 20G,省去了不停增长的开销。

可是并不是很理解这个原因? 磁盘空间足够 增量及上限均正常 按理说不会出现这种问题, 以及解决办法是重启服务就可以解决 不科学啊

#14


是不是有很多临时表

#15


引用 13 楼 u014076523 的回复:
可是并不是很理解这个原因? 磁盘空间足够 增量及上限均正常 按理说不会出现这种问题, 以及解决办法是重启服务就可以解决 不科学啊

tempdb重启就会重建。
关于文件大小讨论起来又是长篇大论,还观点各异。
多说无益,行动起来改大小。

#16


tempdb数据库是一个非常特殊的数据库,供所有来访问你的SQL Server的用户使用。这个库用来保存所有的临时表、存储过程和其他SQL Server建立的临时用的东西。例如,排序时要用到tempdb数据库。数据被放进tempdb数据库,排完序后再把结果返回给用户。每次SQL Server重新启动,它都会清空tempdb数据库并重建。永远不要在tempdb数据库建立需要永久保存的表。

#17


SQL Server 2008 TempDB数据库日志已满原来是这样啊,我还以为重启服务会自动把这个数据库放大 ,那么如果改大小的话这个数据库还是会满, 有没有其他能够永久解决这个的方法呢

#18


做个类比:数据在不停增多,硬盘终有一天会满,有没有永久的解决方法呢?

#19


引用 18 楼 Tiger_Zhao 的回复:
做个类比:数据在不停增多,硬盘终有一天会满,有没有永久的解决方法呢?

创建个作业定时清空这个数据库可以吗

#20


不行。
tempdb就是正给运行的任务做工作空间的,那么多的硬盘空间留着发霉吗?
数据库就是用空间换时间(性能),硬盘/内存要留(预先分配)足。

#21


引用 20 楼 Tiger_Zhao 的回复:
不行。
tempdb就是正给运行的任务做工作空间的,那么多的硬盘空间留着发霉吗?
数据库就是用空间换时间(性能),硬盘/内存要留(预先分配)足。

还有两个问题望解答  
1 数据库占内存将其改小是否会对性能产生影响
2 为啥这个tempdb 有几个子文件 是干啥用的

#22


引用 21 楼 u014076523 的回复:
还有两个问题望解答  
1 数据库占内存将其改小是否会对性能产生影响
2 为啥这个tempdb 有几个子文件 是干啥用的

有影响。
.ndf文件也是数据文件。

#1



-- 看看什么情况

sp_helpdb tempdb
 

#2


引用 1 楼 wmxcn2000 的回复:

-- 看看什么情况

sp_helpdb tempdb
 


用这个查出来 结果为25311.69MB 算24.7G  其他的好像没什么特别的
然后下面有 8行   1 2行没有动过  一直都是3.9 下面的 总size加起来就等于上面的 24.7G   除了第二个日志有限上限为256G  其他均无限制增长上限   SQL Server 2008 TempDB数据库日志已满不知道下面那6行是干啥的,正常情况不是只有2行吗 

#3


讲道理,这个跟磁盘空间应该是没有关系的,磁盘空间充足不存在爆满现象,而增长上限均未限制  
重启服务器最大的变化就是内存清掉了一些,会不会跟内存有关 64G的内存 按道理来 平常使用量基本稳定在54G左右 大部分为SQL Server所占  网上查了一下正常64G 实际可使用量不超过59G 所以猜想是不是跟内存有关 SQL Server 2008 TempDB数据库日志已满不过好像日志满了跟内存应该没有半毛钱关系啊

#4


既然自己分析不出来,就把运行结果帖出来,别在那里自说自话。
现在只能靠猜:是不是文件是按固定大小增长的,而增长后的大小会超过硬盘容量?

#5


SQL Server 2008 TempDB数据库日志已满公司电脑不能连外网 插USB  截图 ,弄了半天才弄出来

#6



tempdb   25311.69 MB sa 2 12 12 2016  Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=655, Collation=Chinese_PRC_CI_AS, SQLSortOrder=0, IsAutoCreateStatistics, IsAutoUpdateStatistics 100



tempdev 1 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\tempdb.mdf PRIMARY 4096000 KB Unlimited 102400 KB data only
templog 2 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\templog.ldf NULL 4096000 KB 2147483648 KB 102400 KB log only
tempdev1 3 E:\TempDB\tempdev1.ndf PRIMARY 940032 KB Unlimited 0 KB data only
tempdev2 4 E:\TempDB\tempdev2.ndf PRIMARY 1595648 KB Unlimited 0 KB data only
tempdev3 5 E:\TempDB\tempdev3.ndf PRIMARY 3793024 KB Unlimited 0 KB data only
tempdev4 6 E:\TempDB\tempdev4.ndf PRIMARY 3928768 KB Unlimited 0 KB data only
tempdev5 7 E:\TempDB\tempdev5.ndf PRIMARY 3764672 KB Unlimited 10240 KB data only
tempdev6 8 E:\TempDB\tempdev6.ndf PRIMARY 3705024 KB Unlimited 102400 KB data only

#7


引用 4 楼 Tiger_Zhao 的回复:
既然自己分析不出来,就把运行结果帖出来,别在那里自说自话。
现在只能靠猜:是不是文件是按固定大小增长的,而增长后的大小会超过硬盘容量?

按道理来说是不会这样的,因为硬盘容量可以说十分充裕   增长量最大也不过500M

#8


你是FAT32的文件系统吧。
没有一个文件是超4G的。
而 templog.ldf 当前是 3.9G,再增 100M 就超4G了。

换用 NTFS 文件系统。
否则文件自动增长没意义,对现场数据库来说,4G文件太小了。

#9


引用 8 楼 Tiger_Zhao 的回复:
你是FAT32的文件系统吧。
没有一个文件是超4G的。
而 templog.ldf 当前是 3.9G,再增 100M 就超4G了。

换用 NTFS 文件系统。
否则文件自动增长没意义,对现场数据库来说,4G文件太小了。

每个磁盘文件系统全是NTFS 

#10


既然会经常性报“日志已满”错误,在磁盘容量够的情况下直接分配足够的空间。
比如手工指定 templog.ldf 的大小为 20G,重启之后默认大小就是 20G,省去了不停增长的开销。

#11


主要问题还是你的磁盘空间不大,一般tempdb已满,,都是磁盘空间不足导致的。

#12


引用 11 楼 ren6370 的回复:
主要问题还是你的磁盘空间不大,一般tempdb已满,,都是磁盘空间不足导致的。


100G的空间应该是够用了吧

#13


引用 10 楼 Tiger_Zhao 的回复:
既然会经常性报“日志已满”错误,在磁盘容量够的情况下直接分配足够的空间。
比如手工指定 templog.ldf 的大小为 20G,重启之后默认大小就是 20G,省去了不停增长的开销。

可是并不是很理解这个原因? 磁盘空间足够 增量及上限均正常 按理说不会出现这种问题, 以及解决办法是重启服务就可以解决 不科学啊

#14


是不是有很多临时表

#15


引用 13 楼 u014076523 的回复:
可是并不是很理解这个原因? 磁盘空间足够 增量及上限均正常 按理说不会出现这种问题, 以及解决办法是重启服务就可以解决 不科学啊

tempdb重启就会重建。
关于文件大小讨论起来又是长篇大论,还观点各异。
多说无益,行动起来改大小。

#16


tempdb数据库是一个非常特殊的数据库,供所有来访问你的SQL Server的用户使用。这个库用来保存所有的临时表、存储过程和其他SQL Server建立的临时用的东西。例如,排序时要用到tempdb数据库。数据被放进tempdb数据库,排完序后再把结果返回给用户。每次SQL Server重新启动,它都会清空tempdb数据库并重建。永远不要在tempdb数据库建立需要永久保存的表。

#17


SQL Server 2008 TempDB数据库日志已满原来是这样啊,我还以为重启服务会自动把这个数据库放大 ,那么如果改大小的话这个数据库还是会满, 有没有其他能够永久解决这个的方法呢

#18


做个类比:数据在不停增多,硬盘终有一天会满,有没有永久的解决方法呢?

#19


引用 18 楼 Tiger_Zhao 的回复:
做个类比:数据在不停增多,硬盘终有一天会满,有没有永久的解决方法呢?

创建个作业定时清空这个数据库可以吗

#20


不行。
tempdb就是正给运行的任务做工作空间的,那么多的硬盘空间留着发霉吗?
数据库就是用空间换时间(性能),硬盘/内存要留(预先分配)足。

#21


引用 20 楼 Tiger_Zhao 的回复:
不行。
tempdb就是正给运行的任务做工作空间的,那么多的硬盘空间留着发霉吗?
数据库就是用空间换时间(性能),硬盘/内存要留(预先分配)足。

还有两个问题望解答  
1 数据库占内存将其改小是否会对性能产生影响
2 为啥这个tempdb 有几个子文件 是干啥用的

#22


引用 21 楼 u014076523 的回复:
还有两个问题望解答  
1 数据库占内存将其改小是否会对性能产生影响
2 为啥这个tempdb 有几个子文件 是干啥用的

有影响。
.ndf文件也是数据文件。