Suponha que eu execute a seguinte consulta:
declare @i integer
set @i=1
while @i < 2000000
BEGIN
insert into t1 (ID,DESC,date) values (@i%200,concat(NEWID(),newid()),GETDATE())
set @i = @i +1
END
O loop está realmente sendo executado na máquina cliente e chamando insert toda vez pela rede, ou o loop está sendo executado no servidor e fazendo apenas chamadas locais?
Na mesma linha, é melhor executar essas consultas conectando-se ao servidor usando o SSMS ou usando o RDP para conectar-se ao servidor e usando a instância local do SSMS?
O SQL Server Management Studio apenas envia a consulta (ou procedimento T-SQL) para o servidor e aguarda o resultado.
Há uma diferença entre executá-lo da LAN ou diretamente no servidor APENAS porque os resultados devem ser transferidos no seu PC (então a diferença é apenas o tempo para transferir dados na LAN). (Além disso, no primeiro caso, seu PC deve estar ligado durante toda a consulta.)
Uma maneira fácil de verificar isso é executar o SQL Profiler enquanto você executa sua instrução. Se você apenas executar com as configurações de rastreamento padrão, verá alguns resultados relacionados a esta instrução: um SQL:BatchStarting e um SQL:BatchCompleted. Ambos têm como TextData a consulta real. Isso significa que o SSMS não está executando o loop; SQL Server é. O SSMS é, como aponta AndreaCi, simplesmente repassando o texto da consulta e informando ao servidor para executar qualquer ação necessária.
Em relação a como executar as consultas, eu recomendaria não entrar diretamente no servidor e executar o SSMS lá (na verdade, eu recomendaria não ter o SSMS instalado nos servidores, mas isso é outro tópico para outra pergunta). O motivo é que o RDP e o SSMS usam recursos do servidor, portanto, os ciclos de RAM e CPU que estão sendo dedicados à execução do software cliente não vão para o SQL Server, tornando o processamento do servidor legítimo marginalmente mais lento para todos.