Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

renommer une table temporaire en table physique

Non.

Si vous l'exécutez à partir d'une base de données autre que tempdb vous obtenez

Ce qui n'est pas surprenant car toutes les pages de données, etc. sont dans le tempdb fichiers de données afin que vous ne puissiez pas le renommer pour qu'il devienne soudainement une table permanente dans une autre base de données.

Si vous l'exécutez depuis tempdb vous obtenez

Si vous faites EXEC sp_helptext sp_rename et regardez la définition du morceau de code pertinent interdisant cela est

--------------------------------------------------------------------------  
 --------------------  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  

Pourquoi ne créeriez-vous pas simplement une table permanente en premier lieu, puis renommeriez-vous ?