2013-04-03 47 views
1

我有一个表,并且在设计模式下,列的名称周围有[square brackets]。这是从哪里来的?我似乎无法删除它,这是造成问题。SQL Server在重命名时出现列问题

enter image description here

+3

内容阻止您的组织 原因: 这Websense类别已过滤:个人网络存储和备份。 URL: http://screencast.com/t/KQZAWzkt – swasheck 2013-04-03 20:07:12

+3

真的吗? '['和']'引起“问题如何?”他们造成了什么“问题”?除非你使用[此语言](http://gbf.sourceforge.net/),其中'['是关键字。 – swasheck 2013-04-03 20:09:49

回答

9

您的列名使用reserved keyword。如果你不喜欢方括号,它们将在很多场景中被需要,所以你可能应该考虑(a)使用非保留字(比如IsDefault)或者(b)不使用设计器。也许都是。

+1

向下选民,关心评论? – 2013-04-03 20:07:25

+1

我在执行表重命名时遇到过这个问题。 'Exec sp_rename'[schema]。[tablename]','[newTable]''会造成这种情况。区别在于第一个是参考,第二个是定义。 – 2013-04-03 20:19:45

+1

@AaronBertrand这在概念上是最好的答案,但为了解决即时问题,我添加了正确的语法来处理重命名作为答案。我之前遇到过这个问题,需要它,所以我认为它可以帮助有人搜索相同的答案。 – 2013-04-03 20:31:15

0

通常这时候领域中有特殊字符(如空格)。试着只做字符和/或数字,它应该消失。

2

在表设计模式下,如果您将任何列名称设置为默认值,它将自动被[]超出,因为默认值是保留关键字。您可以通过右键单击并删除它来删除它。

5

为了摆脱支架做的......

Exec sp_rename '[schema].[table].[[DEFAULT]]]', 'BetterColumnName', 'Column'; 
+0

+1好点...但是,我没有问题在列名称字段中单击右键并手动重命名(如果我继续选择保留的关键字,则无法在没有括号的情况下保存它,但我不会如果我想要一个更明智的名字,则不需要明确地使用'sp_rename')。当然,我正在使用SSMS 2012;也许以前的版本对此并不那么友好。 – 2013-04-03 20:34:50

+0

@AaronBertrand啊,知道了,我从来没有使用过设计模式,所以我没有意识到这个限制。对象浏览器和sp_rename将允许我在没有括号的情况下将列名更改为“DEFAULT”,但我明白了你的观点。在这种情况下,我很喜欢这个选项,因为它重命名了一个不正确地重命名为环境的表。我只是运行了一个部署脚本,而不是在500多个数据库上使用对象浏览器。 ;) – 2013-04-03 20:48:02

+0

是的,是有道理的。该工具的现代版本应该能够处理OP的场景,但如果他们坚持使用保留关键字*和* 8年前的版本...... – 2013-04-03 20:49:13