2013-06-18 112 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'