Consegui encontrar o problema executando a consulta enquanto monitorava o processo com o Monitor de processo do SysInternalSuite . Ao exibir os resultados da consulta em uma grade, o SQL Server Management Studio cria um arquivo .tmp em C: \ Users \ nome do usuário \ AppData \ Local \ Temp \ chamado tmp #### .tmp (em que os # são caracteres gerados aleatoriamente) .
Por alguma razão, meu diretório temp tinha sido preenchido com mais de 40.000 desses arquivos (todos vazios) e o Process Monitor estava mostrando que quando minha consulta não estava exibindo os resultados, estava lançando milhares de erros de "NAME COLLISION" tentando vir com um novo nome para o arquivo temporário que ele estava tentando criar.
Exibir resultados de consulta para texto não cria um arquivo temporário que explique por que isso não está causando problemas.
A exclusão de todos os arquivos .tmp desse diretório temporário corrigiu meu problema imediatamente.
Espero que isso ajude alguém.