2012-11-14 67 views
2

我想这已经创造了一个表中重命名几列:SQL服务器 - 重命名列

USE AdventureWorks 
    GO 

    EXEC sp_RENAME 'registration.StudentID', 'Temp', 'COLUMN'; 
    GO 

但我收到此错误信息:

无论是参数@objname不明确或声明的@objtype(COLUMN)错误。

如果我省略“列”,出现此错误:

通过“registration.StudentID”的名字没有项目可以在当前数据库“的AdventureWorks”中找到,因为@ itemtype为 输入为'(null)'。

我很确定StudentID列存在并且有数据在那里。谁能帮我吗?谢谢!!!

+0

我在你的第一个版本中看到你有'registration.dbo.Enrollment.StudentID',你能否阐明数据库,模式,表和列名? –

+0

当然,我犯了一个错字。数据库注册,模式dbo,表注册,列 - StudentID – zoe

+0

所以你应该'使用注册'不'使用AdventureWorks'和'exec sp_rename'dbo.enrollment.StudentID','Temp','COLUMN';'然后 –

回答

0

正确的调用是

sp_RENAME 'TableName.[OldColumnName]' , '[NewColumnName]', 'COLUMN' 

所以我认为基于评论这是你需要什么我们的代码应该是

USE AdventureWorks 
    GO 
    EXEC sp_RENAME '[registration].StudentID', 'Temp', 'COLUMN'; 

    Go 
+0

感谢您的答复AMH!我尝试了'[注册] .StudentID','Temp','COLUMN';和'注册。[StudentID]','[Temp]','COLUMN';但仍然得到相同的错误.. – zoe

+0

是你确定列名 – AMH

+0

我认为是。从其创建的地方复制.. – zoe

3

USE registration; 

EXEC sp_rename 'dbo.enrollment.StudentID', 'Temp', 'COLUMN';