2013-04-03 30 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