Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何使用T-SQL重命名列名_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 如何使用T-SQL重命名列名

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 (列)是错误的 我真的不明白您的表是如何设

我需要有关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 (列)是错误的


我真的不明白您的表是如何设置的-即表名、列名等-因此这是一个列重命名过程的示例:

如果我有一张这样的桌子:

CREATE TABLE [dbo].[Company](
[ID] [int],
[CompanyName] [varchar](20)
)
要更改
[CompanyName]
列,请执行以下命令:

EXEC sys.sp_rename 
    @objname = N'dbo.Company.CompanyName', 
    @newname = 'Name', 
    @objtype = 'COLUMN'
我怀疑你的第一个论点是不对的

从文档中()

如果要重命名的对象是表中的列,则对象名称的格式必须为table.columnschema.table.column。如果要重命名的对象是索引,则对象名称的格式必须为table.index或schema.table.index


您也可以通过右键单击列名并在对象资源管理器中选择“重命名”选项来更改列名。

如果您想创建迁移脚本(通常是这样),通常不是一个好主意。问题是关于使用T-SQL而不是对象资源管理器重命名!这不是答案。@kami这是问题标题:“如何用T-SQL重命名列名”不是吗?对于包含大量数据的表,这可能需要相当长的时间才能运行,因为它在后台将数据放入临时表中,然后将数据复制回来。注:这在回答中是隐式的,但要明确地确认它(因为最初的问题似乎是因为它而出错),对于sp_重命名调用,应该删除对象名称中的括号。例如,在本过程中,应该是“dbo.1965$.obec”,而不是“[dbo].[1965$].obec”(以及其他使用类似对象名称字符串的MS内部)。