2012-05-15 55 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狀態比他們必須除其他事項外字母開頭。您可以通過將它們括在括號或雙引號中來解決該問題。