我可以这样做吗?
create table #tbl_tmp (col1 int) insert into #tbl_tmp select 3 exec sp_rename '#tbl_tmp','tbl_new'
解决方法
没有.
如果你从tempdb以外的数据库运行它,你会得到
No item by the name of ‘#tbl_tmp’ could be found in the current
database ….
这并不奇怪,因为所有数据页面等都在tempdb数据文件中,因此您无法将其重命名为突然变成其他数据库中的永久表.
如果你从tempdb运行它,你得到
An invalid parameter or option was specified for procedure
‘sys.sp_rename’.
如果你执行EXEC sp_helptext sp_rename并查看定义相关的代码位,则不允许这样做
-------------------------------------------------------------------------- -------------------- 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) = N'#')) begin COMMIT TRANSACTION raiserror(15600,-1,'sys.sp_rename') return 1 end
你为什么不首先创建一个永久表,然后重命名?