相关疑难解决方法(0)

如何确定哪个查询正在填满 tempdb 事务日志?

我想知道如何识别实际填充 TEMPDB 数据库事务日志的确切查询或存储过程。

sql-server-2005 sql-server-2008 sql-server tempdb transaction-log

75
推荐指数
3
解决办法
19万
查看次数

TempDB 不会收缩。没有未结交易

我在 SQL 2008 上有一个 TempDB,它变得非常大(> 40gb),我想缩小它。我已经通过 Management Studio 使用了 dbcc 收缩数据库、dbcc 收缩文件和收缩命令。

我收到以下错误:

页面 1:4573184 无法移动,因为它是工作表页面。

通过运行 DBCC FREEPROCCACHE 并重新运行其中一个收缩例程,我已经能够回收一​​些空间使我脱离危险,但显然这并不理想,而且可能只会给我争取一点时间。

我已经运行 DBCC OpenTran 并且没有任何东西挂在那里。

我在互联网上读到的所有地方都归结为回收 SQL Server ……肯定有更好的方法……有人吗?

谢谢,

汤姆

sql-server-2008 shrink tempdb

10
推荐指数
1
解决办法
2万
查看次数

查找填满版本存储的事务

我们为一些 SQL Server 2005 数据库启用了“READ_COMMITTED_SNAPSHOT”。

现在我们不时看到我们的 TempDB 正在填满硬盘,我们怀疑版本存储是罪魁祸首。

我们监视 TempDB 的使用情况sys.dm_db_file_space_usage,一旦我们看到版本存储在增加(如 所报告的那样 version_store_reserved_page_count),我们希望识别正在使用版本存储的事务。

我正在使用以下语句来查找使用版本存储的事务:

SELECT db_name(spu.database_id) as database_name,
       at.transaction_begin_time as begin_time,
       case 
         when at.transaction_state in (0,1) then 'init'
         when at.transaction_state = 2 then 'active'
         when at.transaction_state = 3 then 'ended'
         when at.transaction_state = 4 then 'committing'
         when at.transaction_state = 6 then 'comitted'
         when at.transaction_state = 7 then 'rolling back'
         when at.transaction_state = 6 then 'rolled back'
         else 'other'
       end as transaction_state,
       ast.elapsed_time_seconds as elapsed_seconds,
       ses.program_name, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server tempdb tempdb-version-store

6
推荐指数
1
解决办法
1万
查看次数

TempDB mdf 文件的问题不断增加

我有一个 tempdb 增长问题。让我通过提供我的 tempdb 设置来开始一切。

临时数据库设置

即使没有在数据库/服务器上运行查询,tempdb 的大小也会不断增加,开始迅速,然后缓慢而没有停止。我运行了许多查询来找出正在运行的内容,下面是查询的结果,它实际上给了我可以使用的结果。

dm_db_task_space_usage

可以看出,它们都是内部 spid 的,有什么方法可以找出 tempdb 继续失控的原因以及如何缓解它?对这个问题的任何帮助将不胜感激。

--Query that returned the result set
SELECT session_id,
       SUM(internal_objects_alloc_page_count)   AS task_internal_objects_alloc_page_count,
       SUM(internal_objects_dealloc_page_count) AS task_internal_objects_dealloc_page_count
FROM   sys.dm_db_task_space_usage
GROUP  BY session_id
HAVING SUM(internal_objects_alloc_page_count) > 0 
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server disk-space tempdb auto-growth

6
推荐指数
2
解决办法
1万
查看次数

MSSQL 表变量识别

有什么方法可以识别哪个存储过程在 tempDB 中创建表变量?

我正在查看 sys.dm_db_index_operational_stats 中的 forward_fetch_count,我们有几个表的计数非常大(最大的超过 1.33 亿)。表名以 # 后跟 8 个十六进制字符的形式出现在 tempDB 中。有没有办法将其追溯到原始流程,以便我们修复它?

我们在 Linux 上运行 SQL 2019。

谢谢,埃文

sql-server sql-server-2019

6
推荐指数
1
解决办法
155
查看次数