Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

renomear uma tabela temporária para uma física


Não.

Se você estiver executando isso de um banco de dados diferente de tempdb você consegue

O que não é surpreendente, pois todas as páginas de dados etc. estão no tempdb arquivos de dados para que você não possa renomear isso de repente para se tornar uma tabela permanente em outro banco de dados.

Se você estiver executando isso de tempdb você consegue

Se você fizer EXEC sp_helptext sp_rename e olhe para a definição, o pedaço de código relevante que não permite isso é
--------------------------------------------------------------------------  
 --------------------  PHASE 32:  Temporay Table Isssue -------------------  
 --------------------------------------------------------------------------  
 -- Disallow renaming object to or from a temp name (starts with #)  
 if (@objtype = 'object' AND  
  (substring(@newname,1,1) = N'#' OR  
  substring(object_name(@objid),1,1) = N'#'))  
 begin  
  COMMIT TRANSACTION  
  raiserror(15600,-1,-1, 'sys.sp_rename')  
  return 1  
 end  

Por que você não cria uma tabela permanente em primeiro lugar e depois renomeia?