Estou criando uma tabela temporária ( #myTable
) e usando um cursor. Isso cria um problema quando usuários simultâneos estão acessando o cursor por meio do meu aplicativo? Isso me permite criar tabelas temporárias separadas com o mesmo nome?
Segue o código de exemplo:
Open cursor;
Fetch Next from cursor into @Variable_Temp_Table_Name;
Create table #myTable(pk int)
While @@Fetch_Status = 0
Begin
Fetch Next from cursor into @Variable_Temp_Table_Name;
End
O SQL Server sempre anexa algum número aleatório no final de um nome de tabela temporária (nos bastidores), quando os usuários simultâneos criam tabelas temporárias em suas sessões com o mesmo nome, o SQL Server criará várias tabelas temporárias no tempdb.
Eu criei 3 tabelas temporárias chamadas
#TempTable
em três sessões diferentes no meu SSMS, agora se eu for ao tempdb eu posso ver as tabelas temporárias criadas lá com uma string aleatória (única) anexada ao nome de cada tabela temporária.Sim, vários aplicativos terão suas próprias cópias da tabela #temp. Esse é o ponto de usar uma tabela #temp, porque cada sessão simultânea tem seu próprio objeto isolado. Isso não tem nada a ver com o fato de você estar usando um cursor em combinação com sua tabela #temp (embora eu suspeite que o cursor não seja necessário de qualquer maneira - você não incluiu código suficiente para comentar especificamente).
Editar para incluir comentário:
Uma coisa adicional sobre o uso de tabelas #temp é que, se você precisar adicionar restrições a elas, deixe o SQL Server gerar o nome, caso contrário, mesmo que a tabela seja exclusiva para a sessão, a restrição não será e a segunda instância criará o erro tabela.