sql >> Base de Datos >  >> RDS >> Sqlserver

cambiar el nombre de una tabla temporal a una física

No.

Si está ejecutando esto desde una base de datos que no sea tempdb obtienes

Lo cual no es sorprendente ya que todas las páginas de datos, etc. están en tempdb archivos de datos para que no pueda cambiar el nombre de esto para que de repente se convierta en una tabla permanente en otra base de datos.

Si está ejecutando esto desde tempdb obtienes

Si haces EXEC sp_helptext sp_rename y mire la definición, el bit de código relevante que no permite esto es

--------------------------------------------------------------------------  
 --------------------  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 qué no crearía una tabla permanente en primer lugar y luego cambiaría el nombre?