2012-05-15 54 views
0

我正在使用SQLserver 2008 R2版本。我正在尝试使用SQL CMD创建数据库。使用SQLCMD当数据库名称以数字开头时,无法创建数据库

当我尝试运行以下命令

Sqlcmd -S 10.2.202.213 -U sa -P [email protected] -Q "create database 125Build5" 

我收到以下错误:

Msg 102, Level 15, State 1, Server WS-INBLR567, Line 1 Incorrect syntax near '125'.

如果我使用的数据库名称不以数字开头,类似“Build5125 ',那么它的工作。 但是我可以从SSMS创建数据库没有任何问题。

回答

1

我真的鼓励您重新考虑创建一个以数字开头的数据库,因为它会通过始终需要限定符来使跨数据库选择变得悲惨。

但是,这就是说,只是将数据库的名称包装在括号中,如[123Whatever]。括号告诉SQL将名称作为文字,所以你可以打破你想要的任何标准的正常命名规则,包括空格或其他特殊字符。 SSMS让你以数字开头的原因是因为它在幕后执行的SQL语句使用了这些括号。

+0

谢谢,但我不知道我知道如何创建以数字开头的数据库导致问题。你可以详细说明吗? – Dunxton

+0

@Dunxton:没有要求阻止这一点,但这意味着您每次执行跨越数据库边界的选择时都必须括号限定数据库名称。另外,糟糕的编码应用程序(包括购买的应用程序的应用程序)并不总是在内部使用括号,并且我已经看到了在尝试访问未根据标准命名的数据库中的数据时应用程序抛出错误的情况(显示错误类似给你自己)。欢迎您随时为您的数据库命名,就像您可以在表名中放置空格一样,但稍后需要额外注意。 – SqlRyan

5

尝试:

create database [125Build5] 

rules for identifiers状态比他们必须除其他事项外字母开头。您可以通过将它们括在括号或双引号中来解决该问题。