github twitter linkedin email
Wait Type Reference

Wait TypeCategory VersionDescriptionAction
ASYNC_IO_COMPLETIONOther Disk IO>= 2005Occurs when a task is waiting for I/Os to finish.Since this is used for various reason you need to find out what query or task is associated with the wait. Two examples of where this wait type is used is to create files associated with a CREATE DATABASE and for “zeroing” out a transaction log file during log creation or growth.
ASYNC_NETWORK_IONetwork IO Occurs on network writes when the task is blocked behind the network. Verify that the client is processing data from the server. 
BACKUPIOOther Disk IO Occurs when a backup task is waiting for data, or is waiting for a buffer in which to store data. This type is not typical, except when a task is waiting for a tape mount. 
BROKER_CONNECTION_RECEIVE_TASKService Broker Occurs when waiting for access to receive a message on a connection endpoint. Receive access to the endpoint is serialized. 
BROKER_DISPATCHERService Broker   
BROKER_ENDPOINT_STATE_MUTEXService Broker Occurs when there is contention to access the state of a Service Broker connection endpoint. Access to the state for changes is serialized. 
BROKER_EVENTHANDLERService Broker Occurs when a task is waiting in the primary event handler of the Service Broker. This should occur very briefly. 
BROKER_FORWARDERService Broker   
BROKER_INITService Broker Occurs when initializing Service Broker in each active database. This should occur infrequently. 
BROKER_MASTERSTARTService Broker Occurs when a task is waiting for the primary event handler of the Service Broker to start. This should occur very briefly. 
BROKER_RECEIVE_WAITFORUser Wait Occurs when the RECEIVE WAITFOR is waiting. This is typical if no messages are ready to be received. 
BROKER_REGISTERALLENDPOINTSService Broker Occurs during the initialization of a Service Broker connection endpoint. This should occur very briefly. 
BROKER_SERVICEService Broker Occurs when the Service Broker destination list that is associated with a target service is updated or re-prioritized. 
BROKER_SHUTDOWNService Broker Occurs when there is a planned shutdown of Service Broker. This should occur very briefly, if at all. 
BROKER_STARTService Broker   
BROKER_TASK_SHUTDOWNService Broker   
BROKER_TASK_STOPService Broker Occurs when the Service Broker queue task handler tries to shut down the task. The state check is serialized and must be in a running state beforehand. 
BROKER_TASK_SUBMITService Broker   
BROKER_TO_FLUSHService Broker Occurs when the Service Broker lazy flusher flushes the in-memory transmission objects to a work table. 
BROKER_TRANSMISSION_OBJECTService Broker   
BROKER_TRANSMISSION_TABLEService Broker   
BROKER_TRANSMISSION_WORKService Broker   
BROKER_TRANSMITTERService Broker Occurs when the Service Broker transmitter is waiting for work. 
CHECKPOINT_QUEUEIdle>= 2008Occurs while the checkpoint task is waiting for the next checkpoint request.You should be able to safely ignore this one as it is just indicates the checkpoint background worker is waiting for work to do. I suppose if you thought you had issues with checkpoints not working or log truncation you might see if this worker ever “wakes up”. Expect higher wait times as this will only wake up when work to do
CHKPTTran Log IO>= 2005Occurs at server startup to tell the checkpoint thread that it can start.You should be able to safely ignore. You should see 1 wait of this type for the server unless the checkpoint worker crashed and had to be restarted.. If though this is technically a “sync” type of event I left its usage as Background
CLR_AUTO_EVENTSQL CLR Occurs when a task is currently performing common language runtime (CLR) execution and is waiting for a particular autoevent to be initiated. Long waits are typical, and do not indicate a problem. 
CLR_CRSTSQL CLR Occurs when a task is currently performing CLR execution and is waiting to enter a critical section of the task that is currently being used by another task. 
CLR_JOINSQL CLR Occurs when a task is currently performing CLR execution and waiting for another task to end. This wait state occurs when there is a join between tasks. 
CLR_MANUAL_EVENTSQL CLR Occurs when a task is currently performing CLR execution and is waiting for a specific manual event to be initiated. 
CLR_MEMORY_SPYSQL CLR Occurs during a wait on lock acquisition for a data structure that is used to record all virtual memory allocations that come from CLR. The data structure is locked to maintain its integrity if there is parallel access. 
CLR_MONITORSQL CLR Occurs when a task is currently performing CLR execution and is waiting to obtain a lock on the monitor. 
CLR_RWLOCK_READERSQL CLR Occurs when a task is currently performing CLR execution and is waiting for a reader lock. 
CLR_RWLOCK_WRITERSQL CLR Occurs when a task is currently performing CLR execution and is waiting for a writer lock. 
CLR_SEMAPHORESQL CLR Occurs when a task is currently performing CLR execution and is waiting for a semaphore. 
CLR_TASK_STARTSQL CLR Occurs while waiting for a CLR task to complete startup. 
CLRHOST_STATE_ACCESSSQL CLR Occurs where there is a wait to acquire exclusive access to the CLR-hosting data structures. This wait type occurs while setting up or tearing down the CLR runtime. 
CMEMPARTITIONEDMemory   
CMEMTHREADMemory Occurs when a task is waiting on a thread-safe memory object. The wait time might increase when there is contention caused by multiple tasks trying to allocate memory from the same memory object. 
CXPACKETParallelism>= 2005Occurs with parallel query plans when trying to synchronize the query processor exchange iterator. If waiting is excessive and cannot be reduced by tuning the query (such as adding indexes), consider adjusting the cost threshold for parallelism or lowering the degree of parallelism.You may not need to take any action. If you see high wait times then it means you have a long running parallel query. I would first identify the query and determine if you need to tune it. Note sys.dm_exec_requests only shows the wait type of the request even if multiple tasks have different wait types. When you see CXPACKET here look at all tasks associated with the request. Find the task that doesn’t have this wait_type and see its status. It may be waiting on something else slowing down the query. wait_resource also has interesting details about the tasks and its parallel query operator
DBMIRROR_DBM_EVENTMirroring Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
DBMIRROR_DBM_MUTEXMirroring Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
DBMIRROR_EVENTS_QUEUEMirroring Occurs when database mirroring waits for events to process. 
DBMIRROR_SENDMirroring Occurs when a task is waiting for a communications backlog at the network layer to clear to be able to send messages. Indicates that the communications layer is starting to become overloaded and affect the database mirroring data throughput. 
DBMIRROR_WORKER_QUEUEMirroring Indicates that the database mirroring worker task is waiting for more work. 
DBMIRRORING_CMDMirroring Occurs when a task is waiting for log records to be flushed to disk. This wait state is expected to be held for long periods of time. 
DTCTransaction Occurs when a task is waiting on an event that is used to manage state transition. This state controls when the recovery of Microsoft Distributed Transaction Coordinator (MS DTC) transactions occurs after SQL Server receives notification that the MS DTC service has become unavailable. This state also describes a task that is waiting when a commit of a MS DTC transaction is initiated by SQL Server and SQL Server is waiting for the MS DTC commit to finish. 
DTC_ABORT_REQUESTTransaction Occurs in a MS DTC worker session when the session is waiting to take ownership of a MS DTC transaction. After MS DTC owns the transaction, the session can roll back the transaction. Generally, the session will wait for another session that is using the transaction. 
DTC_RESOLVETransaction Occurs when a recovery task is waiting for the master database in a cross-database transaction so that the task can query the outcome of the transaction. 
DTC_STATETransaction Occurs when a task is waiting on an event that protects changes to the internal MS DTC global state object. This state should be held for very short periods of time. 
DTC_TMDOWN_REQUESTTransaction Occurs in a MS DTC worker session when SQL Server receives notification that the MS DTC service is not available. First, the worker will wait for the MS DTC recovery process to start. Then, the worker waits to obtain the outcome of the distributed transaction that the worker is working on. This may continue until the connection with the MS DTC service has been reestablished. 
DTC_WAITFOR_OUTCOMETransaction Occurs when recovery tasks wait for MS DTC to become active to enable the resolution of prepared transactions. 
DTCNEW_ENLISTTransaction   
DTCNEW_PREPARETransaction   
DTCNEW_RECOVERYTransaction   
DTCNEW_TMTransaction   
DTCNEW_TRANSACTION_ENLISTMENTTransaction   
DTCPNTSYNCTransaction   
EE_PMOLOCKMemory Occurs during synchronization of certain types of memory allocations during statement execution. 
EXCHANGEParallelism Occurs during synchronization in the query processor exchange iterator during parallel queries. 
EXTERNAL_SCRIPT_NETWORK_IOFNetwork IO   
FCB_REPLICA_READReplication Occurs when the reads of a snapshot (or a temporary snapshot created by DBCC) sparse file are synchronized. 
FCB_REPLICA_WRITEReplication Occurs when the pushing or pulling of a page to a snapshot (or a temporary snapshot created by DBCC) sparse file is synchronized. 
FT_COMPROWSET_RWLOCKFull Text Search Full-text is waiting on fragment metadata operation. Documented for informational purposes only. Not supported. Future compatibility is not guaranteed. 
FT_IFTS_RWLOCKFull Text Search Full-text is waiting on internal synchronization. Documented for informational purposes only. Not supported. Future compatibility is not guaranteed. 
FT_IFTS_SCHEDULER_IDLE_WAITIdle>= 2008Full-text scheduler sleep wait type. The scheduler is idle.You should be able to safely ignore unless some unexplained FTS issue. High wait times are normal
FT_IFTSHC_MUTEXFull Text Search Full-text is waiting on an fdhost control operation. Documented for informational purposes only. Not supported. Future compatibility is not guaranteed. 
FT_IFTSISM_MUTEXFull Text Search Full-text is waiting on communication operation. Documented for informational purposes only. Not supported. Future compatibility is not guaranteed. 
FT_MASTER_MERGEFull Text Search Full-text is waiting on master merge operation. Documented for informational purposes only. Not supported. Future compatibility is not guaranteed. 
FT_MASTER_MERGE_COORDINATORFull Text Search   
FT_METADATA_MUTEXFull Text Search Documented for informational purposes only. Not supported. Future compatibility is not guaranteed. 
FT_PROPERTYLIST_CACHEFull Text Search   
FT_RESTART_CRAWLFull Text Search Occurs when a full-text crawl needs to restart from a last known good point to recover from a transient failure. The wait lets the worker tasks currently working on that population to complete or exit the current step. 
FULLTEXT GATHERERFull Text Search Occurs during synchronization of full-text operations. 
HADR_AG_MUTEXReplication Occurs when an AlwaysOn DDL statement or Windows Server Failover Clustering command is waiting for exclusive read/write access to the configuration of an availability group. 
HADR_AR_CRITICAL_SECTION_ENTRYReplication Occurs when an AlwaysOn DDL statement or Windows Server Failover Clustering command is waiting for exclusive read/write access to the runtime state of the local replica of the associated availability group. 
HADR_AR_MANAGER_MUTEXReplication Occurs when an availability replica shutdown is waiting for startup to complete or an availability replica startup is waiting for shutdown to complete. Internal use only. Availability replica shutdown is initiated either by SQL Server shutdown or by SQL Server handling the loss of quorum by the Windows Server Failover Clustering node. Availability replica startup is initiated either by SQL Server startup or by SQL Server recovering from the loss of quorum by the Windows Server Failover Clustering node. 
HADR_AR_UNLOAD_COMPLETEDReplication   
HADR_ARCONTROLLER_NOTIFICATIONS_SUBSCRIBER_LISTReplication The publisher for an availability replica event (such as a state change or configuration change) is waiting for exclusive read/write access to the list of event subscribers. Internal use only. 
HADR_BACKUP_BULK_LOCKReplication The AlwaysOn primary database received a backup request from a secondary database and is waiting for the background thread to finish processing the request on acquiring or releasing the BulkOp lock. 
HADR_BACKUP_QUEUEReplication The backup background thread of the AlwaysOn primary database is waiting for a new work request from the secondary database. (typically, this occurs when the primary database is holding the BulkOp log and is waiting for the secondary database to indicate that the primary database can release the lock). 
HADR_CLUSAPI_CALLReplication A SQL Server thread is waiting to switch from non-preemptive mode (scheduled by SQL Server) to preemptive mode (scheduled by the operating system) in order to invoke Windows Server Failover Clustering APIs. 
HADR_COMPRESSED_CACHE_SYNCReplication Waiting for access to the cache of compressed log blocks that is used to avoid redundant compression of the log blocks sent to multiple secondary databases. 
HADR_CONNECTIVITY_INFOReplication   
HADR_DATABASE_FLOW_CONTROLReplication Waiting for messages to be sent to the partner when the maximum number of queued messages has been reached. Indicates that the log scans are running faster than the network sends. This is an issue only if network sends are slower than expected. 
HADR_DATABASE_VERSIONING_STATEReplication Occurs on the versioning state change of an AlwaysOn secondary database. This wait is for internal data structures and is usually is very short with no direct effect on data access. 
HADR_DATABASE_WAIT_FOR_RECOVERYReplication   
HADR_DATABASE_WAIT_FOR_RESTARTReplication Waiting for the database to restart under AlwaysOn Availability Groups control. Under normal conditions, this is not a customer issue because waits are expected here. 
HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONINGReplication A query on object(s) in a readable secondary database of an AlwaysOn availability group is blocked on row versioning while waiting for commit or rollback of all transactions that were in-flight when the secondary replica was enabled for read workloads. This wait type guarantees that row versions are available before execution of a query under snapshot isolation. 
HADR_DB_COMMANDReplication Waiting for responses to conversational messages (which require an explicit response from the other side, using the AlwaysOn conversational message infrastructure). A number of different message types use this wait type. 
HADR_DB_OP_COMPLETION_SYNCReplication Waiting for responses to conversational messages (which require an explicit response from the other side, using the AlwaysOn conversational message infrastructure). A number of different message types use this wait type. 
HADR_DB_OP_START_SYNCReplication An AlwaysOn DDL statement or a Windows Server Failover Clustering command is waiting for serialized access to an availability database and its runtime state. 
HADR_DBR_SUBSCRIBERReplication The publisher for an availability replica event (such as a state change or configuration change) is waiting for exclusive read/write access to the runtime state of an event subscriber that corresponds to an availability database. Internal use only. 
HADR_DBR_SUBSCRIBER_FILTER_LISTReplication The publisher for an availability replica event (such as a state change or configuration change) is waiting for exclusive read/write access to the list of event subscribers that correspond to availability databases. Internal use only. 
HADR_DBSEEDINGReplication   
HADR_DBSEEDING_LISTReplication   
HADR_DBSTATECHANGE_SYNCReplication Concurrency control wait for updating the internal state of the database replica. 
HADR_FABRIC_CALLBACKReplication   
HADR_FILESTREAM_BLOCK_FLUSHReplication The FILESTREAM AlwaysOn transport manager is waiting until processing of a log block is finished. 
HADR_FILESTREAM_FILE_CLOSEReplication The FILESTREAM AlwaysOn transport manager is waiting until the next FILESTREAM file gets processed and its handle gets closed. 
HADR_FILESTREAM_FILE_REQUESTReplication An AlwaysOn secondary replica is waiting for the primary replica to send all requested FILESTREAM files during UNDO. 
HADR_FILESTREAM_IOMGRReplication The FILESTREAM AlwaysOn transport manager is waiting for R/W lock that protects the FILESTREAM AlwaysOn I/O manager during startup or shutdown. 
HADR_FILESTREAM_IOMGR_IOCOMPLETIONReplication The FILESTREAM AlwaysOn I/O manager is waiting for I/O completion. 
HADR_FILESTREAM_MANAGERReplication The FILESTREAM AlwaysOn transport manager is waiting for the R/W lock that protects the FILESTREAM AlwaysOn transport manager during startup or shutdown. 
HADR_FILESTREAM_PREPROCReplication   
HADR_GROUP_COMMITReplication Transaction commit processing is waiting to allow a group commit so that multiple commit log records can be put into a single log block. This wait is an expected condition that optimizes the log I/O, capture, and send operations. 
HADR_LOGCAPTURE_SYNCReplication Concurrency control around the log capture or apply object when creating or destroying scans. This is an expected wait when partners change state or connection status. 
HADR_LOGCAPTURE_WAITReplication Waiting for log records to become available. Can occur either when waiting for new log records to be generated by connections or for I/O completion when reading log not in the cache. This is an expected wait if the log scan is caught up to the end of log or is reading from disk. 
HADR_LOGPROGRESS_SYNCReplication Concurrency control wait when updating the log progress status of database replicas. 
HADR_NOTIFICATION_DEQUEUEReplication A background task that processes Windows Server Failover Clustering notifications is waiting for the next notification. Internal use only. 
HADR_NOTIFICATION_WORKER_EXCLUSIVE_ACCESSReplication The AlwaysOn availability replica manager is waiting for serialized access to the runtime state of a background task that processes Windows Server Failover Clustering notifications. Internal use only. 
HADR_NOTIFICATION_WORKER_STARTUP_SYNCReplication A background task is waiting for the completion of the startup of a background task that processes Windows Server Failover Clustering notifications. Internal use only. 
HADR_NOTIFICATION_WORKER_TERMINATION_SYNCReplication A background task is waiting for the termination of a background task that processes Windows Server Failover Clustering notifications. Internal use only. 
HADR_PARTNER_SYNCReplication Concurrency control wait on the partner list. 
HADR_READ_ALL_NETWORKSReplication Waiting to get read or write access to the list of WSFC networks. Internal use only. The engine keeps a list of WSFC networks that is used in dynamic management views (such as sys.dm_hadr_cluster_networks) or to validate AlwaysOn Transact-SQL statements that reference WSFC network information. This list is updated upon engine startup, WSFC related notifications, and internal AlwaysOn restart (for example, losing and regaining of WSFC quorum). Tasks will usually be blocked when an update in that list is in progress. 
HADR_RECOVERY_WAIT_FOR_CONNECTIONReplication Waiting for the secondary database to connect to the primary database before running recovery. This is an expected wait, which can lengthen if the connection to the primary is slow to establish. 
HADR_RECOVERY_WAIT_FOR_UNDOReplication Database recovery is waiting for the secondary database to finish the reverting and initializing phase to bring it back to the common log point with the primary database. This is an expected wait after failovers.Undo progress can be tracked through the Windows System Monitor (perfmon.exe) and dynamic management views. 
HADR_REPLICAINFO_SYNCReplication Waiting for concurrency control to update the current replica state. 
HADR_SEEDING_CANCELLATIONReplication   
HADR_SEEDING_FILE_LISTReplication   
HADR_SEEDING_LIMIT_BACKUPSReplication   
HADR_SEEDING_SYNC_COMPLETIONReplication   
HADR_SEEDING_TIMEOUT_TASKReplication   
HADR_SEEDING_WAIT_FOR_COMPLETIONReplication   
HADR_SYNC_COMMITReplication Waiting for transaction commit processing for the synchronized secondary databases to harden the log. This wait is also reflected by the Transaction Delay performance counter. This wait type is expected for synchronized availability groups and indicates the time to send, write, and acknowledge log to the secondary databases. 
HADR_SYNCHRONIZING_THROTTLEReplication Waiting for transaction commit processing to allow a synchronizing secondary database to catch up to the primary end of log in order to transition to the synchronized state. This is an expected wait when a secondary database is catching up. 
HADR_TDS_LISTENER_SYNCReplication Either the internal AlwaysOn system or the WSFC cluster will request that listeners are started or stopped. The processing of this request is always asynchronous, and there is a mechanism to remove redundant requests. There are also moments that this process is suspended because of configuration changes. All waits related with this listener synchronization mechanism use this wait type. Internal use only. 
HADR_TDS_LISTENER_SYNC_PROCESSINGReplication Used at the end of an AlwaysOn Transact-SQL statement that requires starting and/or stopping an availability group listener. Since the start/stop operation is done asynchronously, the user thread will block using this wait type until the situation of the listener is known. 
HADR_THROTTLE_LOG_RATE_GOVERNORLog Rate Governor   
HADR_TIMER_TASKReplication Waiting to get the lock on the timer task object and is also used for the actual waits between times that work is being performed. For example, for a task that runs every 10 seconds, after one execution, AlwaysOn Availability Groups waits about 10 seconds to reschedule the task, and the wait is included here. 
HADR_TRANSPORT_DBRLISTReplication Waiting for access to the transport layers database replica list. Used for the spinlock that grants access to it. 
HADR_TRANSPORT_FLOW_CONTROLReplication Waiting when the number of outstanding unacknowledged AlwaysOn messages is over the out flow control threshold. This is on an availability replica-to-replica basis (not on a database-to-database basis). 
HADR_TRANSPORT_SESSIONReplication AlwaysOn Availability Groups is waiting while changing or accessing the underlying transport state. 
HADR_WORK_POOLReplication Concurrency control wait on the AlwaysOn Availability Groups background work task object. 
HADR_WORK_QUEUEReplication AlwaysOn Availability Groups background worker thread waiting for new work to be assigned. This is an expected wait when there are ready workers waiting for new work, which is the normal state. 
HADR_XRF_STACK_ACCESSReplication Accessing (look up, add, and delete) the extended recovery fork stack for an AlwaysOn availability database. 
INSTANCE_LOG_RATE_GOVERNORLog Rate Governor   
IOCOMPLETIONOther Disk IO>= 2005Occurs while waiting for I/O operations to complete. This wait type generally represents non-data page I/Os. Data page I/O completion waits appear as PAGEIOLATCH* waits.If wait times are high then you have a disk I/O bottleneck. The problem will be determining what type of operation and where the bottleneck exists. For sorts, it is on the storage system associated with tempdb. Note that database page I/O does not use this wait type. Instead look at PAGEIOLATCH waits.
IO_QUEUE_LIMITOther Disk IO   
IO_RETRYOther Disk IO Occurs when an I/O operation such as a read or a write to disk fails because of insufficient resources, and is then retried. 
LATCHDTLatch Occurs when waiting for a DT (destroy) latch. This does not include buffer latches or transaction mark latches. A listing of LATCH* waits is available in sys.dm_os_latch_stats. Note that sys.dm_os_latch_stats groups LATCH_NL, LATCH_SH, LATCH_UP, LATCH_EX, and LATCH_DT waits together. 
LATCHEXLatch Occurs when waiting for an EX (exclusive) latch. This does not include buffer latches or transaction mark latches. A listing of LATCH* waits is available in sys.dm_os_latch_stats. Note that sys.dm_os_latch_stats groups LATCH_NL, LATCH_SH, LATCH_UP, LATCH_EX, and LATCH_DT waits together. 
LATCHKPLatch Occurs when waiting for a KP (keep) latch. This does not include buffer latches or transaction mark latches. A listing of LATCH* waits is available in sys.dm_os_latch_stats. Note that sys.dm_os_latch_stats groups LATCH_NL, LATCH_SH, LATCH_UP, LATCH_EX, and LATCH_DT waits together. 
LATCH_NLLatch Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
LATCHSHLatch Occurs when waiting for an SH (share) latch. This does not include buffer latches or transaction mark latches. A listing of LATCH* waits is available in sys.dm_os_latch_stats. Note that sys.dm_os_latch_stats groups LATCH_NL, LATCH_SH, LATCH_UP, LATCH_EX, and LATCH_DT waits together. 
LATCHUPLatch Occurs when waiting for an UP (update) latch. This does not include buffer latches or transaction mark latches. A listing of LATCH* waits is available in sys.dm_os_latch_stats. Note that sys.dm_os_latch_stats groups LATCH_NL, LATCH_SH, LATCH_UP, LATCH_EX, and LATCH_DT waits together. 
LAZYWRITER_SLEEPIdle>= 2005Occurs when lazywriter tasks are suspended. This is a measure of the time spent by background tasks that are waiting. Do not consider this state when you are looking for user stalls.You should be able to safely ignore this one. The wait times will appear to “cycle” as LazyWriter is designed to sleep and wake-up every 1 second. Appears as LZW_SLEEP in Xevent
LCK_M_BULock Occurs when a task is waiting to acquire a Bulk Update (BU) lock. 
LCK_M_BU_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Bulk Update (BU) lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_BU_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Bulk Update (BU) lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_ISLock Occurs when a task is waiting to acquire an Intent Shared (IS) lock. 
LCK_M_IS_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Intent Shared (IS) lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_IS_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Intent Shared (IS) lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_IULock Occurs when a task is waiting to acquire an Intent Update (IU) lock. 
LCK_M_IU_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Intent Update (IU) lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_IU_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Intent Update (IU) lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_IXLock Occurs when a task is waiting to acquire an Intent Exclusive (IX) lock. 
LCK_M_IX_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Intent Exclusive (IX) lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_IX_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Intent Exclusive (IX) lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_NLLock Occurs when a task is waiting to acquire a lock on the current key value, and an Insert Range lock between the current and previous key. A lock on the key is an instant release lock. 
LCK_M_RIn_NL_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a lock with Abort Blockers on the current key value, and an Insert Range lock with Abort Blockers between the current and previous key. A lock on the key is an instant release lock. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_NL_LOW_PRIORITYLock Occurs when a task is waiting to acquire a lock with Low Priority on the current key value, and an Insert Range lock with Low Priority between the current and previous key. A lock on the key is an instant release lock. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_SLock Occurs when a task is waiting to acquire a shared lock on the current key value, and an Insert Range lock between the current and previous key. 
LCK_M_RIn_S_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a shared lock with Abort Blockers on the current key value, and an Insert Range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_S_LOW_PRIORITYLock Occurs when a task is waiting to acquire a shared lock with Low Priority on the current key value, and an Insert Range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_ULock Task is waiting to acquire an Update lock on the current key value, and an Insert Range lock between the current and previous key. 
LCK_M_RIn_U_ABORT_BLOCKERSLock Task is waiting to acquire an Update lock with Abort Blockers on the current key value, and an Insert Range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_U_LOW_PRIORITYLock Task is waiting to acquire an Update lock with Low Priority on the current key value, and an Insert Range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_XLock Occurs when a task is waiting to acquire an Exclusive lock on the current key value, and an Insert Range lock between the current and previous key. 
LCK_M_RIn_X_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Exclusive lock with Abort Blockers on the current key value, and an Insert Range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RIn_X_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Exclusive lock with Low Priority on the current key value, and an Insert Range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RS_SLock Occurs when a task is waiting to acquire a Shared lock on the current key value, and a Shared Range lock between the current and previous key. 
LCK_M_RS_S_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Shared lock with Abort Blockers on the current key value, and a Shared Range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RS_S_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Shared lock with Low Priority on the current key value, and a Shared Range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RS_ULock Occurs when a task is waiting to acquire an Update lock on the current key value, and an Update Range lock between the current and previous key. 
LCK_M_RS_U_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Update lock with Abort Blockers on the current key value, and an Update Range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RS_U_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Update lock with Low Priority on the current key value, and an Update Range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RX_SLock Occurs when a task is waiting to acquire a Shared lock on the current key value, and an Exclusive Range lock between the current and previous key. 
LCK_M_RX_S_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Shared lock with Abort Blockers on the current key value, and an Exclusive Range with Abort Blockers lock between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RX_S_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Shared lock with Low Priority on the current key value, and an Exclusive Range with Low Priority lock between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RX_ULock Occurs when a task is waiting to acquire an Update lock on the current key value, and an Exclusive range lock between the current and previous key. 
LCK_M_RX_U_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Update lock with Abort Blockers on the current key value, and an Exclusive range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RX_U_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Update lock with Low Priority on the current key value, and an Exclusive range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RX_XLock Occurs when a task is waiting to acquire an Exclusive lock on the current key value, and an Exclusive Range lock between the current and previous key. 
LCK_M_RX_X_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Exclusive lock with Abort Blockers on the current key value, and an Exclusive Range lock with Abort Blockers between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_RX_X_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Exclusive lock with Low Priority on the current key value, and an Exclusive Range lock with Low Priority between the current and previous key. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SLock Occurs when a task is waiting to acquire a Shared lock. 
LCK_M_S_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Shared lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_S_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Shared lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SCH_MLock Occurs when a task is waiting to acquire a Schema Modify lock. 
LCK_M_SCH_M_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Schema Modify lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SCH_M_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Schema Modify lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SCH_SLock Occurs when a task is waiting to acquire a Schema Share lock. 
LCK_M_SCH_S_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Schema Share lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SCH_S_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Schema Share lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SIULock Occurs when a task is waiting to acquire a Shared With Intent Update lock. 
LCK_M_SIU_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Shared With Intent Update lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SIU_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Shared With Intent Update lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SIXLock Occurs when a task is waiting to acquire a Shared With Intent Exclusive lock. 
LCK_M_SIX_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire a Shared With Intent Exclusive lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_SIX_LOW_PRIORITYLock Occurs when a task is waiting to acquire a Shared With Intent Exclusive lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_ULock Occurs when a task is waiting to acquire an Update lock. 
LCK_M_U_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Update lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_U_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Update lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_UIXLock Occurs when a task is waiting to acquire an Update With Intent Exclusive lock. 
LCK_M_UIX_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Update With Intent Exclusive lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_UIX_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Update With Intent Exclusive lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_XLock Occurs when a task is waiting to acquire an Exclusive lock. 
LCK_M_X_ABORT_BLOCKERSLock Occurs when a task is waiting to acquire an Exclusive lock with Abort Blockers. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LCK_M_X_LOW_PRIORITYLock Occurs when a task is waiting to acquire an Exclusive lock with Low Priority. (Related to the low priority wait option of ALTER TABLE and ALTER INDEX.) 
LOGBUFFERTran Log IO>= 2005Occurs when a task is waiting for space in the log buffer to store a log record. Consistently high values may indicate that the log devices cannot keep up with the amount of log being generated by the server.This is typically a symptom of I/O bottlenecks because other workers waiting on WRITELOG will hold on to log blocks. Look for WRITERLOG waiters and if found the overall problem is I/O bottleneck on the storage system associated with the transaction log
LOGMGRTran Log IO Occurs when a task is waiting for any outstanding log I/Os to finish before shutting down the log while closing the database. 
LOGMGR_FLUSHTran Log IO Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
LOGMGR_PMM_LOGTran Log IO   
LOGMGR_QUEUEIdle>= 2005Occurs while the log writer task waits for work requests.You should be able to safely ignore this wait type unless you believe a problem exists in processing log blocks to flush to the transaction log. This wait type is not a wait indicating I/O bottlenecks. It is only for waiting for other workers to request log block flushes. Note that on SQL Server 2005 this wait type will not show up in sys.dm_exec_requests because the Log Writer task does not show up there.
LOGMGR_RESERVE_APPENDTran Log IO Occurs when a task is waiting to see whether log truncation frees up log space to enable the task to write a new log record. Consider increasing the size of the log file(s) for the affected database to reduce this wait. 
MEMORY_ALLOCATION_EXTMemory   
MEMORY_GRANT_UPDATEMemory   
MSQL_XACT_MGR_MUTEXTransaction Occurs when a task is waiting to obtain ownership of the session transaction manager to perform a session level transaction operation. 
MSQL_XACT_MUTEXTransaction Occurs during synchronization of transaction usage. A request must acquire the mutex before it can use the transaction. 
MSSEARCHFull Text Search Occurs during Full-Text Search calls. This wait ends when the full-text operation completes. It does not indicate contention, but rather the duration of full-text operations. 
NET_WAITFOR_PACKETNetwork IO Occurs when a connection is waiting for a network packet during a network read. 
ONDEMAND_TASK_QUEUEIdle Occurs while a background task waits for high priority system task requests. Long wait times indicate that there have been no high priority requests to process, and should not cause concern. 
PAGEIOLATCH_DTBuffer IO Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Destroy mode. Long waits may indicate problems with the disk subsystem. 
PAGEIOLATCH_EXBuffer IO Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Exclusive mode. Long waits may indicate problems with the disk subsystem. 
PAGEIOLATCH_KPBuffer IO Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Keep mode. Long waits may indicate problems with the disk subsystem. 
PAGEIOLATCH_NLBuffer IO Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PAGEIOLATCH_SHBuffer IO Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Shared mode. Long waits may indicate problems with the disk subsystem. 
PAGEIOLATCH_UPBuffer IO Occurs when a task is waiting on a latch for a buffer that is in an I/O request. The latch request is in Update mode. Long waits may indicate problems with the disk subsystem. 
PAGELATCH_DTBuffer Latch Occurs when a task is waiting on a latch for a buffer that is not in an I/O request. The latch request is in Destroy mode. 
PAGELATCH_EXBuffer Latch Occurs when a task is waiting on a latch for a buffer that is not in an I/O request. The latch request is in Exclusive mode. 
PAGELATCH_KPBuffer Latch Occurs when a task is waiting on a latch for a buffer that is not in an I/O request. The latch request is in Keep mode. 
PAGELATCH_NLBuffer Latch Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PAGELATCH_SHBuffer Latch Occurs when a task is waiting on a latch for a buffer that is not in an I/O request. The latch request is in Shared mode. 
PAGELATCH_UPBuffer Latch Occurs when a task is waiting on a latch for a buffer that is not in an I/O request. The latch request is in Update mode. 
POOL_LOG_RATE_GOVERNORLog Rate Governor   
PREEMPTIVE_ABRPreemptive Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PREEMPTIVE_CLOSEBACKUPMEDIAPreemptive Occurs when the SQLOS scheduler switches to preemptive mode to close backup media. 
PREEMPTIVE_CLOSEBACKUPTAPEPreemptive Occurs when the SQLOS scheduler switches to preemptive mode to close a tape backup device. 
PREEMPTIVE_CLOSEBACKUPVDIDEVICEPreemptive Occurs when the SQLOS scheduler switches to preemptive mode to close a virtual backup device. 
PREEMPTIVE_CLUSAPI_CLUSTERRESOURCECONTROLPreemptive Occurs when the SQLOS scheduler switches to preemptive mode to perform Windows failover cluster operations. 
PREEMPTIVE_COM_COCREATEINSTANCEPreemptive Occurs when the SQLOS scheduler switches to preemptive mode to create a COM object. 
PREEMPTIVE_COM_COGETCLASSOBJECTPreemptive   
PREEMPTIVE_COM_CREATEACCESSORPreemptive   
PREEMPTIVE_COM_DELETEROWSPreemptive   
PREEMPTIVE_COM_GETCOMMANDTEXTPreemptive   
PREEMPTIVE_COM_GETDATAPreemptive   
PREEMPTIVE_COM_GETNEXTROWSPreemptive   
PREEMPTIVE_COM_GETRESULTPreemptive   
PREEMPTIVE_COM_GETROWSBYBOOKMARKPreemptive   
PREEMPTIVE_COM_LBFLUSHPreemptive   
PREEMPTIVE_COM_LBLOCKREGIONPreemptive   
PREEMPTIVE_COM_LBREADATPreemptive   
PREEMPTIVE_COM_LBSETSIZEPreemptive   
PREEMPTIVE_COM_LBSTATPreemptive   
PREEMPTIVE_COM_LBUNLOCKREGIONPreemptive   
PREEMPTIVE_COM_LBWRITEATPreemptive   
PREEMPTIVE_COM_QUERYINTERFACEPreemptive   
PREEMPTIVE_COM_RELEASEPreemptive   
PREEMPTIVE_COM_RELEASEACCESSORPreemptive   
PREEMPTIVE_COM_RELEASEROWSPreemptive   
PREEMPTIVE_COM_RELEASESESSIONPreemptive   
PREEMPTIVE_COM_RESTARTPOSITIONPreemptive   
PREEMPTIVE_COM_SEQSTRMREADPreemptive   
PREEMPTIVE_COM_SEQSTRMREADANDWRITEPreemptive   
PREEMPTIVE_COM_SETDATAFAILUREPreemptive   
PREEMPTIVE_COM_SETPARAMETERINFOPreemptive   
PREEMPTIVE_COM_SETPARAMETERPROPERTIESPreemptive   
PREEMPTIVE_COM_STRMLOCKREGIONPreemptive   
PREEMPTIVE_COM_STRMSEEKANDREADPreemptive   
PREEMPTIVE_COM_STRMSEEKANDWRITEPreemptive   
PREEMPTIVE_COM_STRMSETSIZEPreemptive   
PREEMPTIVE_COM_STRMSTATPreemptive   
PREEMPTIVE_COM_STRMUNLOCKREGIONPreemptive   
PREEMPTIVE_CONSOLEWRITEPreemptive   
PREEMPTIVE_CREATEPARAMPreemptive   
PREEMPTIVE_DEBUGPreemptive   
PREEMPTIVE_DFSADDLINKPreemptive   
PREEMPTIVE_DFSLINKEXISTCHECKPreemptive   
PREEMPTIVE_DFSLINKHEALTHCHECKPreemptive   
PREEMPTIVE_DFSREMOVELINKPreemptive   
PREEMPTIVE_DFSREMOVEROOTPreemptive   
PREEMPTIVE_DFSROOTFOLDERCHECKPreemptive   
PREEMPTIVE_DFSROOTINITPreemptive   
PREEMPTIVE_DFSROOTSHARECHECKPreemptive   
PREEMPTIVE_DTC_ABORTPreemptive   
PREEMPTIVE_DTC_ABORTREQUESTDONEPreemptive   
PREEMPTIVE_DTC_BEGINTRANSACTIONPreemptive   
PREEMPTIVE_DTC_COMMITREQUESTDONEPreemptive   
PREEMPTIVE_DTC_ENLISTPreemptive   
PREEMPTIVE_DTC_PREPAREREQUESTDONEPreemptive   
PREEMPTIVE_FILESIZEGETPreemptive   
PREEMPTIVE_FSAOLEDB_ABORTTRANSACTIONPreemptive   
PREEMPTIVE_FSAOLEDB_COMMITTRANSACTIONPreemptive   
PREEMPTIVE_FSAOLEDB_STARTTRANSACTIONPreemptive   
PREEMPTIVE_FSRECOVER_UNCONDITIONALUNDOPreemptive   
PREEMPTIVE_GETRMINFOPreemptive   
PREEMPTIVE_HADR_LEASE_MECHANISMPreemptive AlwaysOn Availability Groups lease manager scheduling for CSS diagnostics. 
PREEMPTIVE_HTTP_EVENT_WAITPreemptive   
PREEMPTIVE_HTTP_REQUESTPreemptive   
PREEMPTIVE_LOCKMONITORPreemptive   
PREEMPTIVE_MSS_RELEASEPreemptive   
PREEMPTIVE_ODBCOPSPreemptive   
PREEMPTIVE_OLE_UNINITPreemptive   
PREEMPTIVE_OLEDB_ABORTORCOMMITTRANPreemptive   
PREEMPTIVE_OLEDB_ABORTTRANPreemptive   
PREEMPTIVE_OLEDB_GETDATASOURCEPreemptive   
PREEMPTIVE_OLEDB_GETLITERALINFOPreemptive   
PREEMPTIVE_OLEDB_GETPROPERTIESPreemptive   
PREEMPTIVE_OLEDB_GETPROPERTYINFOPreemptive   
PREEMPTIVE_OLEDB_GETSCHEMALOCKPreemptive   
PREEMPTIVE_OLEDB_JOINTRANSACTIONPreemptive   
PREEMPTIVE_OLEDB_RELEASEPreemptive   
PREEMPTIVE_OLEDB_SETPROPERTIESPreemptive   
PREEMPTIVE_OLEDBOPSPreemptive   
PREEMPTIVE_OS_ACCEPTSECURITYCONTEXTPreemptive   
PREEMPTIVE_OS_ACQUIRECREDENTIALSHANDLEPreemptive   
PREEMPTIVE_OS_AUTHENTICATIONOPSPreemptive   
PREEMPTIVE_OS_AUTHORIZATIONOPSPreemptive   
PREEMPTIVE_OS_AUTHZGETINFORMATIONFROMCONTEXTPreemptive   
PREEMPTIVE_OS_AUTHZINITIALIZECONTEXTFROMSIDPreemptive   
PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGERPreemptive   
PREEMPTIVE_OS_BACKUPREADPreemptive   
PREEMPTIVE_OS_CLOSEHANDLEPreemptive   
PREEMPTIVE_OS_CLUSTEROPSPreemptive   
PREEMPTIVE_OS_COMOPSPreemptive   
PREEMPTIVE_OS_COMPLETEAUTHTOKENPreemptive   
PREEMPTIVE_OS_COPYFILEPreemptive   
PREEMPTIVE_OS_CREATEDIRECTORYPreemptive   
PREEMPTIVE_OS_CREATEFILEPreemptive   
PREEMPTIVE_OS_CRYPTACQUIRECONTEXTPreemptive   
PREEMPTIVE_OS_CRYPTIMPORTKEYPreemptive   
PREEMPTIVE_OS_CRYPTOPSPreemptive   
PREEMPTIVE_OS_DECRYPTMESSAGEPreemptive   
PREEMPTIVE_OS_DELETEFILEPreemptive   
PREEMPTIVE_OS_DELETESECURITYCONTEXTPreemptive   
PREEMPTIVE_OS_DEVICEIOCONTROLPreemptive   
PREEMPTIVE_OS_DEVICEOPSPreemptive   
PREEMPTIVE_OS_DIRSVC_NETWORKOPSPreemptive   
PREEMPTIVE_OS_DISCONNECTNAMEDPIPEPreemptive   
PREEMPTIVE_OS_DOMAINSERVICESOPSPreemptive   
PREEMPTIVE_OS_DSGETDCNAMEPreemptive   
PREEMPTIVE_OS_DTCOPSPreemptive   
PREEMPTIVE_OS_ENCRYPTMESSAGEPreemptive   
PREEMPTIVE_OS_FILEOPSPreemptive   
PREEMPTIVE_OS_FINDFILEPreemptive   
PREEMPTIVE_OS_FLUSHFILEBUFFERSPreemptive   
PREEMPTIVE_OS_FORMATMESSAGEPreemptive   
PREEMPTIVE_OS_FREECREDENTIALSHANDLEPreemptive   
PREEMPTIVE_OS_FREELIBRARYPreemptive   
PREEMPTIVE_OS_GENERICOPSPreemptive   
PREEMPTIVE_OS_GETADDRINFOPreemptive   
PREEMPTIVE_OS_GETCOMPRESSEDFILESIZEPreemptive   
PREEMPTIVE_OS_GETDISKFREESPACEPreemptive   
PREEMPTIVE_OS_GETFILEATTRIBUTESPreemptive   
PREEMPTIVE_OS_GETFILESIZEPreemptive   
PREEMPTIVE_OS_GETFINALFILEPATHBYHANDLEPreemptive   
PREEMPTIVE_OS_GETLONGPATHNAMEPreemptive   
PREEMPTIVE_OS_GETPROCADDRESSPreemptive   
PREEMPTIVE_OS_GETVOLUMENAMEFORVOLUMEMOUNTPOINTPreemptive   
PREEMPTIVE_OS_GETVOLUMEPATHNAMEPreemptive   
PREEMPTIVE_OS_INITIALIZESECURITYCONTEXTPreemptive   
PREEMPTIVE_OS_LIBRARYOPSPreemptive   
PREEMPTIVE_OS_LOADLIBRARYPreemptive   
PREEMPTIVE_OS_LOGONUSERPreemptive   
PREEMPTIVE_OS_LOOKUPACCOUNTSIDPreemptive   
PREEMPTIVE_OS_MESSAGEQUEUEOPSPreemptive   
PREEMPTIVE_OS_MOVEFILEPreemptive   
PREEMPTIVE_OS_NETGROUPGETUSERSPreemptive   
PREEMPTIVE_OS_NETLOCALGROUPGETMEMBERSPreemptive   
PREEMPTIVE_OS_NETUSERGETGROUPSPreemptive   
PREEMPTIVE_OS_NETUSERGETLOCALGROUPSPreemptive   
PREEMPTIVE_OS_NETUSERMODALSGETPreemptive   
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYPreemptive   
PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYFREEPreemptive   
PREEMPTIVE_OS_OPENDIRECTORYPreemptive   
PREEMPTIVE_OS_PDH_WMI_INITPreemptive   
PREEMPTIVE_OS_PIPEOPSPreemptive   
PREEMPTIVE_OS_PROCESSOPSPreemptive   
PREEMPTIVE_OS_QUERYCONTEXTATTRIBUTESPreemptive   
PREEMPTIVE_OS_QUERYREGISTRYPreemptive   
PREEMPTIVE_OS_QUERYSECURITYCONTEXTTOKENPreemptive   
PREEMPTIVE_OS_REMOVEDIRECTORYPreemptive   
PREEMPTIVE_OS_REPORTEVENTPreemptive   
PREEMPTIVE_OS_REVERTTOSELFPreemptive   
PREEMPTIVE_OS_RSFXDEVICEOPSPreemptive   
PREEMPTIVE_OS_SECURITYOPSPreemptive   
PREEMPTIVE_OS_SERVICEOPSPreemptive   
PREEMPTIVE_OS_SETENDOFFILEPreemptive   
PREEMPTIVE_OS_SETFILEPOINTERPreemptive   
PREEMPTIVE_OS_SETFILEVALIDDATAPreemptive   
PREEMPTIVE_OS_SETNAMEDSECURITYINFOPreemptive   
PREEMPTIVE_OS_SQLCLROPSPreemptive   
PREEMPTIVE_OS_SQMLAUNCHPreemptive   
PREEMPTIVE_OS_VERIFYSIGNATUREPreemptive   
PREEMPTIVE_OS_VERIFYTRUSTPreemptive   
PREEMPTIVE_OS_VSSOPSPreemptive   
PREEMPTIVE_OS_WAITFORSINGLEOBJECTPreemptive   
PREEMPTIVE_OS_WINSOCKOPSPreemptive   
PREEMPTIVE_OS_WRITEFILEPreemptive   
PREEMPTIVE_OS_WRITEFILEGATHERPreemptive   
PREEMPTIVE_OS_WSASETLASTERRORPreemptive   
PREEMPTIVE_REENLISTPreemptive   
PREEMPTIVE_RESIZELOGPreemptive   
PREEMPTIVE_ROLLFORWARDREDOPreemptive   
PREEMPTIVE_ROLLFORWARDUNDOPreemptive   
PREEMPTIVE_SB_STOPENDPOINTPreemptive   
PREEMPTIVE_SERVER_STARTUPPreemptive   
PREEMPTIVE_SETRMINFOPreemptive   
PREEMPTIVE_SHAREDMEM_GETDATAPreemptive   
PREEMPTIVE_SNIOPENPreemptive   
PREEMPTIVE_SOSHOSTPreemptive   
PREEMPTIVE_SOSTESTINGPreemptive Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PREEMPTIVE_SP_SERVER_DIAGNOSTICSPreemptive   
PREEMPTIVE_STARTRMPreemptive   
PREEMPTIVE_STREAMFCB_CHECKPOINTPreemptive   
PREEMPTIVE_STREAMFCB_RECOVERPreemptive   
PREEMPTIVE_STRESSDRIVERPreemptive Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PREEMPTIVE_TESTINGPreemptive Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PREEMPTIVE_TRANSIMPORTPreemptive   
PREEMPTIVE_UNMARSHALPROPAGATIONTOKENPreemptive   
PREEMPTIVE_VSS_CREATESNAPSHOTPreemptive   
PREEMPTIVE_VSS_CREATEVOLUMESNAPSHOTPreemptive   
PREEMPTIVE_XE_CALLBACKEXECUTEPreemptive   
PREEMPTIVE_XE_CX_FILE_OPENPreemptive   
PREEMPTIVE_XE_CX_HTTP_CALLPreemptive   
PREEMPTIVE_XE_DISPATCHERPreemptive   
PREEMPTIVE_XE_ENGINEINITPreemptive   
PREEMPTIVE_XE_GETTARGETSTATEPreemptive   
PREEMPTIVE_XE_SESSIONCOMMITPreemptive   
PREEMPTIVE_XE_TARGETFINALIZEPreemptive   
PREEMPTIVE_XE_TARGETINITPreemptive   
PREEMPTIVE_XE_TIMERRUNPreemptive   
PREEMPTIVE_XETESTINGPreemptive Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
PWAIT_HADR_ACTION_COMPLETEDReplication   
PWAIT_HADR_CHANGE_NOTIFIER_TERMINATION_SYNCReplication Occurs when a background task is waiting for the termination of the background task that receives (via polling) Windows Server Failover Clustering notifications. 
PWAIT_HADR_CLUSTER_INTEGRATIONReplication An append, replace, and/or remove operation is waiting to grab a write lock on an AlwaysOn internal list (such as a list of networks, network addresses, or availability group listeners). Internal use only 
PWAIT_HADR_FAILOVER_COMPLETEDReplication   
PWAIT_HADR_JOINReplication   
PWAIT_HADR_OFFLINE_COMPLETEDReplication An AlwaysOn drop availability group operation is waiting for the target availability group to go offline before destroying Windows Server Failover Clustering objects. 
PWAIT_HADR_ONLINE_COMPLETEDReplication An AlwaysOn create or failover availability group operation is waiting for the target availability group to come online. 
PWAIT_HADR_POST_ONLINE_COMPLETEDReplication An AlwaysOn drop availability group operation is waiting for the termination of any background task that was scheduled as part of a previous command. For example, there may be a background task that is transitioning availability databases to the primary role. The DROP AVAILABILITY GROUP DDL must wait for this background task to terminate in order to avoid race conditions. 
PWAIT_HADR_SERVER_READY_CONNECTIONSReplication   
PWAIT_HADR_WORKITEM_COMPLETEDReplication Internal wait by a thread waiting for an async work task to complete. This is an expected wait and is for CSS use. 
PWAIT_HADRSIMReplication   
PWAIT_RESOURCE_SEMAPHORE_FT_PARALLEL_QUERY_SYNCFull Text Search   
QUERY_TRACEOUTTracing Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
REPL_CACHE_ACCESSReplication Occurs during synchronization on a replication article cache. During these waits, the replication log reader stalls, and data definition language (DDL) statements on a published table are blocked. 
REPL_HISTORYCACHE_ACCESSReplication   
REPL_SCHEMA_ACCESSReplication Occurs during synchronization of replication schema version information. This state exists when DDL statements are executed on the replicated object, and when the log reader builds or consumes versioned schema based on DDL occurrence. This wait type is also used by log reader agent to synchronize memory access. If a publisher has large number of very active published databases and log reader agents, contention can be seen on this wait type. 
REPL_TRANFSINFO_ACCESSReplication   
REPL_TRANHASHTABLE_ACCESSReplication   
REPL_TRANTEXTINFO_ACCESSReplication   
REPLICA_WRITESReplication Occurs while a task waits for completion of page writes to database snapshots or DBCC replicas. 
REQUEST_FOR_DEADLOCK_SEARCHIdle>= 2008Occurs while the deadlock monitor waits to start the next deadlock search. This wait is expected between deadlock detections, and lengthy total waiting time on this resource does not indicate a problem.You should be able to safely ignore this one as it is just and indication the lock monitor thread is temporarily sleeping before it wakes up to do work. This wait type should never exceed 5 seconds in one “wait” as this is the interval the lock monitor wakes up to check for deadlocks
RESERVED_MEMORY_ALLOCATION_EXTMemory   
RESOURCE_SEMAPHOREMemory>= 2005Occurs when a query memory request cannot be granted immediately due to other concurrent queries. High waits and wait times may indicate excessive number of concurrent queries, or excessive memory request amounts.High wait times indicate too many queries are running concurrently that require query memory. Operations requiring query memory are hashes and sorts. Use DMVs such as dm_exec_query_resource_semaphores and dm_exec_query_memory_grants
RESOURCE_SEMAPHORE_QUERY_COMPILECompilation>= 2005Occurs when the number of concurrent query compilations reaches a throttling limit. High waits and wait times may indicate excessive compilations, recompiles, or uncachable plans.This is a very complicated problem to explain. The problem is more than just concurrent compilations. It is the amount of memory required by the compilations. Typically this problem is not seen on 64bit systems. The biggest thing you can do is find out why you have so many compilations. Furthermore, a high amount of “query memory” can result in less memory available for compilations so check what other users are consuming high query memory.
SLEEP_BPOOL_FLUSHIdle Occurs when a checkpoint is throttling the issuance of new I/Os in order to avoid flooding the disk subsystem. 
SLEEP_BUFFERPOOL_HELPLWIdle   
SLEEP_DBSTARTUPIdle Occurs during database startup while waiting for all databases to recover. 
SLEEP_DCOMSTARTUPIdle Occurs once at most during SQL Server instance startup while waiting for DCOM initialization to complete. 
SLEEP_MASTERDBREADYIdle   
SLEEP_MASTERMDREADYIdle   
SLEEP_MASTERUPGRADEDIdle   
SLEEP_MEMORYPOOL_ALLOCATEPAGESIdle   
SLEEP_MSDBSTARTUPIdle Occurs when SQL Trace waits for the msdb database to complete startup. 
SLEEP_RETRY_VIRTUALALLOCIdle   
SLEEP_SYSTEMTASKIdle Occurs during the start of a background task while waiting for tempdb to complete startup. 
SLEEP_TASKIdle Occurs when a task sleeps while waiting for a generic event to occur. 
SLEEP_TEMPDBSTARTUPIdle Occurs while a task waits for tempdb to complete startup. 
SLEEP_WORKSPACE_ALLOCATEPAGEIdle   
SOS_SCHEDULER_YIELDCPU>= 2005Occurs when a task voluntarily yields the scheduler for other tasks to execute. During this wait the task is waiting for its quantum to be renewed.This wait is simply an indication that a worker yielded for someone else to run. High wait counts with low wait times usually mean CPU bound queries. High wait times here could be non-yielding problems
SQLCLR_APPDOMAINSQL CLR Occurs while CLR waits for an application domain to complete startup. 
SQLCLR_ASSEMBLYSQL CLR Occurs while waiting for access to the loaded assembly list in the appdomain. 
SQLCLR_DEADLOCK_DETECTIONSQL CLR Occurs while CLR waits for deadlock detection to complete. 
SQLCLR_QUANTUM_PUNISHMENTSQL CLR Occurs when a CLR task is throttled because it has exceeded its execution quantum. This throttling is done in order to reduce the effect of this resource-intensive task on other tasks. 
SQLTRACE_BUFFER_FLUSHIdle>= 2005Occurs when a task is waiting for a background task to flush trace buffers to disk every four seconds.You should be able to safely ignore unless some unexplained problem with SQLTrace files not getting written to disk properly.
SQLTRACE_FILE_BUFFERTracing Occurs during synchronization on trace buffers during a file trace. 
SQLTRACE_FILE_READ_IO_COMPLETIONTracing   
SQLTRACE_FILE_WRITE_IO_COMPLETIONTracing   
SQLTRACE_INCREMENTAL_FLUSH_SLEEPIdle   
SQLTRACE_PENDING_BUFFER_WRITERSTracing   
SQLTRACE_SHUTDOWNTracing Occurs while trace shutdown waits for outstanding trace events to complete. 
SQLTRACE_WAIT_ENTRIESIdle Occurs while a SQL Trace event queue waits for packets to arrive on the queue. 
THREADPOOLWorker Thread>= 2005Occurs when a task is waiting for a worker to run on. This can indicate that the maximum worker setting is too low, or that batch executions are taking unusually long, thus reducing the number of workers available to satisfy other batches.Look for symptoms of high blocking or contention problems with many of the workers especially if the wait count and times are high. Don’t jump to increase max worker threads especially if you use default setting of 0. This wait type will not show up in sys.dm_exec_requests because it only occurs when the task is waiting on a worker thread. You must have a worker to become a request. Furthermore, you may not see this “live” since there may be no workers to process tasks for logins or for queries to look at DMVs.
TRACE_EVTNOTIFTracing   
TRACEWRITETracing Occurs when the SQL Trace rowset trace provider waits for either a free buffer or a buffer with events to process. 
TRAN_MARKLATCH_DTTransaction Occurs when waiting for a destroy mode latch on a transaction mark latch. Transaction mark latches are used for synchronization of commits with marked transactions. 
TRAN_MARKLATCH_EXTransaction Occurs when waiting for an exclusive mode latch on a marked transaction. Transaction mark latches are used for synchronization of commits with marked transactions. 
TRAN_MARKLATCH_KPTransaction Occurs when waiting for a keep mode latch on a marked transaction. Transaction mark latches are used for synchronization of commits with marked transactions. 
TRAN_MARKLATCH_NLTransaction Identified for informational purposes only. Not supported. Future compatibility is not guaranteed. 
TRAN_MARKLATCH_SHTransaction Occurs when waiting for a shared mode latch on a marked transaction. Transaction mark latches are used for synchronization of commits with marked transactions. 
TRAN_MARKLATCH_UPTransaction Occurs when waiting for an update mode latch on a marked transaction. Transaction mark latches are used for synchronization of commits with marked transactions. 
TRANSACTION_MUTEXTransaction Occurs during synchronization of access to a transaction by multiple batches. 
WAIT_FOR_RESULTSUser Wait Occurs when waiting for a query notification to be triggered. 
WAITFORUser Wait Occurs as a result of a WAITFOR Transact-SQL statement. The duration of the wait is determined by the parameters to the statement. This is a user-initiated wait. 
WRITE_COMPLETIONOther Disk IO Occurs when a write operation is in progress. 
WRITELOGTran Log IO>= 2005Occurs while waiting for a log flush to complete. Common operations that cause log flushes are checkpoints and transaction commits.High waits and wait times indicate an I/O bottleneck on the storage system associated with the transaction log
XACT_OWN_TRANSACTIONTransaction Occurs while waiting to acquire ownership of a transaction. 
XACT_RECLAIM_SESSIONTransaction Occurs while waiting for the current owner of a session to release ownership of the session. 
XACTLOCKINFOTransaction Occurs during synchronization of access to the list of locks for a transaction. In addition to the transaction itself, the list of locks is accessed by operations such as deadlock detection and lock migration during page splits. 
XACTWORKSPACE_MUTEXTransaction Occurs during synchronization of defections from a transaction, as well as the number of database locks between enlist members of a transaction. 
XE_DISPATCHER_WAITIdle>= 2008Occurs when a background thread that is used for Extended Events sessions is waiting for event buffers to process.You should be able to safely ignore this unless you believe a problem is occurring with processing of events for async targets. Since this works on a queue you can have bursts of high wait times especially when no XEvent sessions are active.
XE_TIMER_EVENTIdle>= 2008Used to indicate a background task is waiting for “expired” timers for internal Xevent engine workYou should be able to safely ignore this one. Just used by the Xevent engine for internal processing of its work. If something was possibly wrong with Xevent processing you might see if this thread ever “wakes up”