2013-06-18 148 views
2

我有一個名爲「數據庫」的MSSQL數據庫。現在,當我試圖使用如下所示的查詢將其重命名,如何重命名名稱爲「數據庫」的MSSQL數據庫?

USE master; 
GO 
ALTER DATABASE Database 
Modify Name = Database01 
GO 

它給了我此錯誤消息:

消息102,15級,狀態1,第1行附近有語法錯誤「數據庫」 。

但是這個查詢適用於其他數據庫。我做錯了什麼?

+2

試着在第二個「數據庫」 – logixologist

+0

雅它的工作原理支架。但爲什麼我必須放置括號?這背後的邏輯是什麼。我的意思是所有其他數據庫工作正常,所以什麼邏輯使它例外? @logixologist – Rezoan

+0

數據庫是一個保留字,意思是SQL使用它。我想如果你想調用你的數據庫SELECT,你可能也會這樣做,如果你把括號括起來,像這樣:[SELECT]。不推薦,因爲名字需要合理。 – logixologist

回答

7

如果您「引用」表名稱它應該工作。默認引號字符是方括號[],所以:

USE master; 
GO 
ALTER DATABASE [Database] 
Modify Name = Database01 
GO 
+0

謝謝,但爲什麼我必須把「報價」? – Rezoan

+0

,因爲數據庫是一個保留字(DATABASE與數據庫相同),並且對數據庫名稱使用保留字通常是一個非常非常糟糕的主意 – Max

+1

@Rezoan - 基本上,除非您引用db名稱,否則服務器不知道你的意思是命令數據庫,還是數據庫名稱數據庫。 – Max

0

時,你必須使用保留的關鍵字表名,數據庫名,列名始終把[](大括號)

select * from [Table]代替select * from table

select [column] from [table]代替select column from table

,但它的保留關鍵字作爲您的對象的名稱是一個非常糟糕的主意。

1

而不是使用的長條代碼,你可以只使用系統內置的存儲過程 - sp_renamedb'oldDBName','NewDBName'