我想通过复制现有表的结构而不复制任何记录来创建一个新的空表。我正在使用SQL Azure。
尝试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 '('.
第三次幸运吗?我是否错过了一些显而易见的事情,我没有想法。
更新 最后我执行了这个程序:
答案 0 :(得分:2)
SQL Azure要求所有表都具有聚簇索引,因此您无法在不创建索引的情况下简单地克隆表结构。
答案 1 :(得分: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
如果没有首先创建定义了聚簇索引的目标表,我不相信有一个好方法可以做到这一点。