Acredito que, embora seja possível fazer o que você está descrevendo, não é muito prático, pois pressupõe muito tempo complicado:uma sessão abre a conexão A e executa o proc para criar a tabela ##temp, e essa sessão mantém a conexão aberta enquanto as conexões B, C, etc. precisarem acessar a tabela temporária.
Você ficaria melhor com uma solução usando uma tabela “permanente”, onde uma linha é adicionada com um identificador exclusivo (int ou GUID) para cada “sessão”, esse valor é retornado pela chamada de inicialização (ou pode ser recuperado ou identificado) e usado por todas as chamadas subsequentes para a sessão.