sys.dm_exec_external_work (Transact-SQL)

Applies to: SQL Server 2016 (13.x) and later versions

Returns information about the workload per worker, on each compute node.

Query sys.dm_exec_external_work to identify the work spun up to communicate with the external data source (for example, Hadoop or MongoDB).

Column Name Data Type Description Range
execution_id nvarchar(32) Unique identifier for associated PolyBase query. See request_ID in sys.dm_exec_requests (Transact-SQL).
step_index int The request this worker is performing. See step_index in sys.dm_exec_requests (Transact-SQL).
dms_step_index int Step in the DMS plan that this worker is executing. See sys.dm_exec_dms_workers (Transact-SQL).
compute_node_id int The node the worker is running on. See sys.dm_exec_compute_nodes (Transact-SQL).
type nvarchar(60) The type of external work. 'File Split' (for Hadoop and Azure storage)

'ODBC Data Split' (for other external data sources)
work_id int ID of the actual split. Greater than or equal to 0.
input_name nvarchar(4000) Name of the input to be read File name (with path) when using Hadoop or Azure storage. For other external data sources, it is the concatenation of the external data source location and the external table location: scheme://DataSourceHostname[:port]/[DatabaseName.][SchemaName.]TableName
read_location bigint Offset of read location. 0 to the number of bytes in the file minus 1.

NULL for non-Hadoop or non-Azure storage.
read_command nvarchar(4000) The query that is sent to the external data source. Introduced in SQL Server 2019 (15.x). Text representing the query. For Hadoop and Azure storage returns NULL.
bytes_processed bigint Total bytes allocated for processing data by this worker. This value may not necessarily represent the total data being returned by the query Greater than or equal to 0.
length bigint Length of the split or, HDFS block for Hadoop User-definable. The default is 64M
status nvarchar(32) Status of the worker Pending, Processing, Done, Failed, Aborted
start_time datetime Beginning of the work
end_time datetime End of the work
total_elapsed_time int Total time in milliseconds
compute_pool_id int Unique identifier for the pool where the worker is running. Only applies to SQL Server Big Data Cluster. See sys.dm_exec_compute_pools (Transact-SQL). Returns 0 for SQL Server on Windows and Linux.


Starting with SQL Server 2019 (15.x), you can use sys.dm_exec_external_work to view the remote query passed to an external data source in PolyBase pushdown computation. For more information, see How to tell if external pushdown occurred.

See also

PolyBase troubleshooting with dynamic management views
Dynamic Management Views and Functions (Transact-SQL)
Database Related Dynamic Management Views (Transact-SQL)