2014-02-13 32 views
2

我想通過複製現有表的結構而不復制任何記錄來創建新的空表。我正在使用SQL Azure。在Azure中從現有表創建空的SQL表

嘗試1:

SELECT * INTO newTable 
FROM oldTable 
WHERE 1 = 0 

返回錯誤:

Msg 40510, Level 16, State 1, Line 1 
Statement 'SELECT INTO' is not supported in this version of SQL Server. 

嘗試2:

CREATE TABLE newTable 
AS (SELECT * FROM oldTable WHERE 1=0) 

返回錯誤:

Msg 102, Level 15, State 1, Line 2 
Incorrect syntax near '('. 

第三次幸運?我錯過了一些明顯的東西,我沒有想法。

UPDATE: 最後,我執行了此過程:

  • 新增Azure的表作爲鏈接表在Access MDB
  • 複製的結構,只對本地表
  • 更名錶
  • 使用「SQL Server導入和導出嚮導」導出到Azure

回答

1

正如您所見,Azure SQL數據庫不支持SELECT INTO。如果目標表已經存在,那麼可以使用INSERT INTO來填充它。請參閱Kevin Yu的帖子:http://blog.kevinyu.org/2012/06/workaround-for-select-into-in-sql-azure.html

我相信不支持SELECT INTO的原因是因爲SQL Azure中的每個表都必須有一個聚簇索引。 SELECT INTO語法將生成一個沒有聚集索引的表。

這是本在一個開放的連接問題:http://connect.microsoft.com/SQLServer/feedback/details/776409/add-select-into-to-sql-azure

我不相信有這樣做沒有先用定義一個聚集索引創建目標表的好方法。

2

SQL Azure要求所有表都具有聚簇索引,因此不能在不創建索引的情況下簡單地克隆表結構。