我创建了一个全局临时表,如下所示 -
CREATE TABLE ##BigTable
(Nos varchar(10) null)
然后尝试像这样重命名Nos列-
EXEC sp_RENAME '##BigTable.Nos' , 'Numbers', 'COLUMN'
我遇到了一个错误 -
Either the parameter @objname is ambiguous or the
claimed @objtype (COLUMN) is wrong.
为什么会发生这种情况,我应该如何解决这个问题?
与问题不完全相关的额外信息,供参考。
我想补充一下 - 我尝试使用完全限定名称创建全局临时表,像这样 -
CREATE TABLE [NotMyTempDataBase].[dbo].[##BigTable]
(Nos varchar(10) null)
之后,我尝试使用 - 重新命名它
EXEC tempdb.sys.sp_rename N'[NotMyTempDataBase].[dbo].[##BigTable].Nos',
N'Numbers', N'COLUMN';
错误 - @oldname 引用的数据库与当前数据库不同。
这是错误的。我意识到即使在创建临时表时指定另一个数据库名称,它也会在系统数据库tempdb中创建。
请改用以下内容 -
CREATE TABLE [tempdb].[dbo].[##BigTable]
(Nos varchar(10) null)
--SQL Server消息:数据库名称“tempdb”被忽略,引用了tempdb中的对象。
EXEC tempdb.sys.sp_rename N'[tempdb].[dbo].[##BigTable].Nos',
N'Numbers', N'COLUMN';
varchar
列中吗?如果是这样,为什么? - Andriy M