PREEMPTIVE_COM_GETDATA SQL Server Wait Type

Wait Type PREEMPTIVE_COM_GETDATA

The wait type PREEMPTIVE_COM_GETDATA is ranked #42 by Stedman Solutions and Database Health Monitor.

Wait statistics, in the context of SQL Server, refer to the amount of time that a query spends waiting to access data in the database. When a client application requests data from the database, the request is placed in a queue and the client application must wait for its turn to access the data. The time that the query spends waiting is called a "wait" and is tracked by SQL Server. This information can be used to identify potential performance bottlenecks and optimize the performance of the database. Wait statistics are commonly used by database administrators to diagnose and troubleshoot performance issues in SQL Server.


SQL Server uses wait types to provide insights into where tasks might experience delays. The PREEMPTIVE_COM_GETDATA wait type is specific to SQL Server’s interaction with external components, particularly when calling COM (Component Object Model) objects. This wait type occurs when SQL Server is executing a COM-based request and is waiting for the external process to return data. Let’s dive into what this means, when it happens, and how to address it.

What Is the PREEMPTIVE_COM_GETDATA Wait Type?

The PREEMPTIVE_COM_GETDATA wait type appears when SQL Server needs to call an external COM object to retrieve data. Since these calls are made outside SQL Server’s process, they are handled in preemptive mode, meaning SQL Server yields the CPU to allow the external operation to complete.

While this is a normal behavior when working with external components, prolonged waits can impact SQL Server’s performance and the responsiveness of dependent processes.

When Does PREEMPTIVE_COM_GETDATA Appear?

This wait type typically occurs in scenarios such as:

  • Integration with External Systems – When SQL Server interacts with external COM-based applications or services.
  • OLE Automation Procedures – If SQL Server is using OLE automation stored procedures like sp_OAGetProperty to retrieve data.
  • Linked Server Queries – When querying data from a linked server that uses a COM-based provider.
  • Extended Stored Procedures – When using extended stored procedures that rely on COM components.

Why PREEMPTIVE_COM_GETDATA Waits Matter

Some PREEMPTIVE_COM_GETDATA waits are expected in environments that rely on external COM components. However, excessive or prolonged waits can indicate inefficiencies or bottlenecks. Common causes include:

  • Slow External Systems – The COM component or external system may be slow to respond, causing SQL Server to wait.
  • Network Latency – If the external component is accessed over a network, high latency can increase wait times.
  • Resource Constraints – Limited CPU, memory, or disk resources on the external system can delay data retrieval.
  • Frequent COM Calls – Over-reliance on COM-based processes can result in high cumulative wait times.

How to Address PREEMPTIVE_COM_GETDATA Waits

If PREEMPTIVE_COM_GETDATA waits are causing performance issues, consider these strategies:

  • Optimize COM Interactions – Reduce the frequency of COM calls or batch them together where possible to minimize overhead.
  • Improve External System Performance – Ensure the external system or COM component has sufficient resources (CPU, memory, disk) to handle requests efficiently.
  • Check Network Performance – Optimize network connectivity between SQL Server and the external system to reduce latency.
  • Avoid Excessive OLE Automation – Consider alternative methods for data retrieval that do not rely on COM-based operations.
  • Monitor Linked Servers – If using linked servers, ensure their configurations are optimized and the data provider is performing well.

Monitoring PREEMPTIVE_COM_GETDATA Waits

To track this wait type, use SQL Server’s sys.dm_os_wait_stats to analyze wait statistics over time. You can also monitor specific queries or processes causing these waits using dynamic management views like sys.dm_exec_requests. Tools like Database Health Monitor provide real-time visibility into wait types, making it easier to diagnose and resolve issues efficiently.

Stedman Solutions specializes in SQL Server performance tuning, offering expert services to optimize your database environment and address wait types like PREEMPTIVE_COM_GETDATA. Our Database Health Monitor tool gives you powerful insights into system performance, helping you keep your SQL Server running smoothly. For managed services and tailored support, visit Stedman Solutions and let us help you achieve optimal SQL Server performance.


Watch on YouTube


Find out more about our SQL Server Managed Services

Applies to

Related Waits

PREEMPTIVE_COM_CREATEACCESSOR
PREEMPTIVE_COM_QUERYINTERFACE
PREEMPTIVE_COM_RELEASE
PREEMPTIVE_COM_RELEASEROWS
PREEMPTIVE_COM_SEQSTRMREAD
PREEMPTIVE_COM_SETPARAMETERINFO
PREEMPTIVE_COM_SETPARAMETERPROPE
PREEMPTIVE_FILESIZEGET
PREEMPTIVE_HADR_LEASE_MECHANISM
PREEMPTIVE_OLEDB_RELEASE
PREEMPTIVE_OLEDBOPS
PREEMPTIVE_OS_AUTHENTICATIONOPS
PREEMPTIVE_OS_AUTHORIZATIONOPS
PREEMPTIVE_OS_AUTHZGETINFORMATIO
PREEMPTIVE_OS_AUTHZINITIALIZECON
PREEMPTIVE_OS_AUTHZINITIALIZERES
PREEMPTIVE_OS_BACKUPREAD
PREEMPTIVE_OS_CLOSEHANDLE
PREEMPTIVE_OS_CLUSTEROPS
PREEMPTIVE_OS_CREATEFILE
PREEMPTIVE_OS_CRYPTACQUIRECONTEX
PREEMPTIVE_OS_CRYPTIMPORTKEY
PREEMPTIVE_OS_CRYPTOPS
PREEMPTIVE_OS_DELETEFILE
PREEMPTIVE_OS_DEVICEIOCONTROL
PREEMPTIVE_OS_DEVICEOPS
PREEMPTIVE_OS_DTCOPS
PREEMPTIVE_OS_ENCRYPTMESSAGE
PREEMPTIVE_OS_FILEOPS
PREEMPTIVE_OS_FLUSHFILEBUFFERS
PREEMPTIVE_OS_GENERICOPS
PREEMPTIVE_OS_GETCOMPRESSEDFILES
PREEMPTIVE_OS_GETDISKFREESPACE
PREEMPTIVE_OS_GETFILEATTRIBUTES
PREEMPTIVE_OS_GETFINALFILEPATHBY
PREEMPTIVE_OS_GETPROCADDRESS
PREEMPTIVE_OS_LIBRARYOPS
PREEMPTIVE_OS_LOADLIBRARY
PREEMPTIVE_OS_LOGONUSER
PREEMPTIVE_OS_LOOKUPACCOUNTSID
PREEMPTIVE_OS_MOVEFILE
PREEMPTIVE_OS_NETVALIDATEPASSWOR
PREEMPTIVE_OS_PIPEOPS
PREEMPTIVE_OS_QUERYREGISTRY
PREEMPTIVE_OS_REPORTEVENT
PREEMPTIVE_OS_REVERTTOSELF
PREEMPTIVE_OS_SECURITYOPS
PREEMPTIVE_OS_SERVICEOPS
PREEMPTIVE_OS_SQLCLROPS
PREEMPTIVE_OS_VERIFYTRUST
PREEMPTIVE_OS_WAITFORSINGLEOBJEC
PREEMPTIVE_OS_WRITEFILEGATHER
PREEMPTIVE_SERVICE_CONTROL_MANAGE
PREEMPTIVE_SERVICE_CONTROL_MANGE
PREEMPTIVE_SHAREDMEM_GETDATA
PREEMPTIVE_XE_CALLBACKEXECUTE
PREEMPTIVE_XE_GETTARGETSTATE
PREEMPTIVE_XE_SESSIONCOMMIT
PREEMPTIVE_XE_TARGETFINALIZE
PREEMPTIVE_XE_TARGETINIT

See Also


All Wait Types
PREEMPTIVE_COM_GETDATA SQL Server Wait Type