2015-06-02 60 views
3
Main.dbName = "7202" 

query = "select * into " + Main.dbName + ".dbo.[AccountReceivableHistory] 
     from " + dbOrigin + ".dbo.[AccountReceivableHistory] where 
     AccountReceivableHistory].Date >= '2012-12-27' and  
     AccountReceivableHistory].Date < '2012-12-28'" 

錯誤說爲什麼我不能「SELECT INTO」名稱以數字開頭的數據庫?

附近有語法錯誤 '7202'。

+0

加前綴一個'架構.table'與另一個標識符的組合充當數據庫名稱。你有一個名爲'7202'的數據庫? – StuartLC

+0

使用數字啓動數據庫對象名稱是不好的做法。您使用「」或「[]」強制引用該引用。爲什麼不像TBL_7202那樣放一個簡單的前綴呢? – wumpz

回答

9

您可以使用一個編號爲表名(或數據庫名稱,或架構名稱 - 看我的意見),但是,您將需要[]逃吧:

select * 
into [123].[456].[789] 
from OtherTable; 

其中[123]代表數據庫,[456]代表模式,[789]代表一個表。

編輯

standardisation,例如利益如果在RDBMS之間存在未來可移植性的可能性,請注意,應該優先使用雙引號"而不是[]來轉義,例如,

SELECT * from "123"."456"."789"; 

然而,您將需要確保在連接上設置了set QUOTED_IDENTIFIER ON

如果正在動態構造的對象的名稱,請注意的是,也可以通過提供一種字符定界符作爲第二個參數,例如,以覆蓋默認逸出QUOTENAME function的:

select QUOTENAME('123', '"'); 
相關問題