因此,我们遇到了一个问题,TempDB的日志目前已被锁定。在检查log_reuse_wait_desc之后,我们发现它是从活动事务中锁定的。现在奇怪的是,当我们运行DBCC来获取导致锁的查询的信息时,该命令返回“Now”。我们已经杀死了连接到TempDB的每个spid,并且我们将循环这个实例来解决这个问题。有没有人知道这里发生了什么,或者是否有更好的方法来处理这件事?
发布于 2015-12-03 21:38:14
所以我们想明白了:
我们重新启动了服务器,当服务器重新启动时,我们仍然有问题。我们开始重新考虑这是否只是TempDB的一个问题,并转向可能试图用扩展事件来捕捉问题。在研究它时,我们偶然发现了一个没有人知道的所谓“测试”的扩展事件。我们禁用了XE,然后,go数字,一切都开始正常工作了。我不知道为什么这会把所有的东西都锁在TempDB里,我们正在调查这个问题,但是现在这个问题已经解决了。
发布于 2015-12-02 23:49:07
你能看到tempdb中运行的是什么吗?
;WITH task_space_usage AS (
-- SUM alloc/delloc pages
SELECT session_id,
request_id,
SUM(internal_objects_alloc_page_count) AS alloc_pages,
SUM(internal_objects_dealloc_page_count) AS dealloc_pages
FROM sys.dm_db_task_space_usage WITH (NOLOCK)
WHERE session_id <> @@SPID
GROUP BY session_id, request_id
)
SELECT TSU.session_id,
TSU.alloc_pages * 1.0 / 128 AS [internal object MB space],
TSU.dealloc_pages * 1.0 / 128 AS [internal object dealloc MB space],
EST.text,
-- Extract statement from sql text
ISNULL(
NULLIF(
SUBSTRING(
EST.text,
ERQ.statement_start_offset / 2,
CASE WHEN ERQ.statement_end_offset < ERQ.statement_start_offset
THEN 0
ELSE( ERQ.statement_end_offset - ERQ.statement_start_offset ) / 2 END
), ''
), EST.text
) AS [statement text],
EQP.query_plan
FROM task_space_usage AS TSU
INNER JOIN sys.dm_exec_requests ERQ WITH (NOLOCK)
ON TSU.session_id = ERQ.session_id
AND TSU.request_id = ERQ.request_id
OUTER APPLY sys.dm_exec_sql_text(ERQ.sql_handle) AS EST
OUTER APPLY sys.dm_exec_query_plan(ERQ.plan_handle) AS EQP
WHERE EST.text IS NOT NULL OR EQP.query_plan IS NOT NULL
ORDER BY 3 DESC;https://dba.stackexchange.com/questions/122735
复制相似问题