Sql server 2008 如何使用T-SQL重命名列名
我需要有关SQL Server表列的帮助。 我正在尝试重命名列名,但这不起作用Sql server 2008 如何使用T-SQL重命名列名,sql-server-2008,tsql,Sql Server 2008,Tsql,我需要有关SQL Server表列的帮助。 我正在尝试重命名列名,但这不起作用 USE COST_mesta_test GO EXEC sp_rename '[dbo].[1965$].obec' , 'people' , 'COLUMN' GO 我尝试了括号[]和表“obec”路径的不同组合 (例如:1965.obec;1965美元.obec;1965年[obec];等等) 但我还是犯了一个错误: 参数@objname不明确或声明的@objtype (列)是错误的 我真的不明白您的表是如何设
USE COST_mesta_test
GO
EXEC sp_rename '[dbo].[1965$].obec' , 'people' , 'COLUMN'
GO
我尝试了括号[]和表“obec”路径的不同组合
(例如:1965.obec;1965美元.obec;1965年[obec];等等)
但我还是犯了一个错误:
参数@objname不明确或声明的@objtype
(列)是错误的
我真的不明白您的表是如何设置的-即表名、列名等-因此这是一个列重命名过程的示例: 如果我有一张这样的桌子:
CREATE TABLE [dbo].[Company](
[ID] [int],
[CompanyName] [varchar](20)
)
要更改[CompanyName]
列,请执行以下命令:
EXEC sys.sp_rename
@objname = N'dbo.Company.CompanyName',
@newname = 'Name',
@objtype = 'COLUMN'
我怀疑你的第一个论点是不对的
从文档中()
如果要重命名的对象是表中的列,则对象名称的格式必须为table.column或schema.table.column。如果要重命名的对象是索引,则对象名称的格式必须为table.index或schema.table.index
您也可以通过右键单击列名并在对象资源管理器中选择“重命名”选项来更改列名。如果您想创建迁移脚本(通常是这样),通常不是一个好主意。问题是关于使用T-SQL而不是对象资源管理器重命名!这不是答案。@kami这是问题标题:“如何用T-SQL重命名列名”不是吗?对于包含大量数据的表,这可能需要相当长的时间才能运行,因为它在后台将数据放入临时表中,然后将数据复制回来。注:这在回答中是隐式的,但要明确地确认它(因为最初的问题似乎是因为它而出错),对于sp_重命名调用,应该删除对象名称中的括号。例如,在本过程中,应该是“dbo.1965$.obec”,而不是“[dbo].[1965$].obec”(以及其他使用类似对象名称字符串的MS内部)。