如何取消 SQL Server 中的索引创建

5 sql-server

如何取消索引创建?

还在运行,会运行很久,因为不小心创建了聚集索引;和非聚集索引正在一个非常大的表上重新创建。

Ran*_*der 6

一种方法是找到查询的进程/会话 ID 并将其终止。您可以在此处了解更多信息。如果您不知道谁或什么真正开始了索引创建,这可能是唯一的方法。

以下查询应显示插入查询的会话 ID:

    SELECT 
    r.session_id as SessionID,
    r.start_time as StartTime,
    r.[status] as Status, 
    r.wait_type as WaitType, 
    r.blocking_session_id as BlockedBySessionID,
    sessions.login_name as BlockedByUser,
    SUBSTRING(qt.[text],r.statement_start_offset / 2, 
        (CASE 
            WHEN r.statement_end_offset = -1 
            THEN LEN(CONVERT(NVARCHAR(MAX), qt.[text])) * 2 
            ELSE r.statement_end_offset 
            END - r.statement_start_offset) / 2) AS SQLStatement,
    DB_NAME(qt.[dbid]) AS DatabaseName, 
    r.cpu_time as CPUTime, 
    r.total_elapsed_time as TotalElapsedTime, 
    Round(r.total_elapsed_time / 1000.0 / 60.0,1) as TotalElapsedTimeInMinutes,
    r.reads as Reads, 
    r.writes as Write, 
    r.logical_reads as LogicalReads
FROM sys.dm_exec_requests AS r 
    OUTER APPLY sys.dm_exec_sql_text(sql_handle) AS qt
    LEFT OUTER JOIN sys.dm_exec_sessions sessions ON sessions.session_id = r.blocking_session_id
WHERE r.session_id > 50 -- This eliminates system requests
ORDER BY r.start_time
Run Code Online (Sandbox Code Playgroud)