Uma solicitação frequente que recebo dos clientes é para ajudar a descobrir quais consultas ou clientes estão fazendo a maior contribuição para o SQL Server saturando um link Ethernet.
Idealmente, eu examinaria alguns contadores ou DMVs mostrando E/S de rede agregada por consulta, cliente, aplicativo, banco de dados etc.
Como não parece haver uma maneira direta de fazer isso, como substituto, geralmente olho para as colunas *_rows em sys.dm_exec_query_stats (essas colunas existem apenas em 2008 R2+, eu acho) e também procuro consultas que parecem envolvem BLOBs.
Existe uma maneira melhor de abordar esse problema?
O correto, 2008R2 em diante, tem *_rows adicionado a sys.dm_exec_query_stats. Eu diria que esse é o caminho a seguir.
Você terá muitas consultas que podem criar E/S de disco massivo, mas ainda terá um pequeno conjunto de resultados. No entanto, não é possível ter um grande conjunto de resultados sem enormes IOs lógicos.
Portanto, observe as estatísticas de consulta ordenadas por io's lógicos primeiro e, em seguida, pela contagem de linhas. Isso lhe dará um bom ponto de partida.
Antes de 2008 R2, eu observaria quais consultas com grandes IOs lógicos têm estatísticas de espera relacionadas à rede. O problema com essa abordagem é. 1) Depois que a rede estiver saturada, é provável que não apenas suas consultas grandes, mas praticamente todas as suas consultas tenham estatísticas de espera relacionadas à rede. 2) As estatísticas de espera relacionadas à rede, em muitos casos, não são causadas por problemas relacionados à rede ;-)
felicidades, Eduardo