【发布时间】:2013-09-16 02:16:37
【问题描述】:
我有一个将 SELECT INTO 运行到表中的脚本。据我所知,没有其他过程可能同时引用/修改此表。但是,偶尔会出现以下错误:
在创建目标表后架构发生了变化。重新运行选择 进入查询。
什么会导致这个错误,我该如何避免?
我做了一些谷歌搜索,this link 建议如果没有一些疯狂的 try-catch-retry 逻辑,就不能安全地使用 SELECT INTO。真的是这样吗?
我使用的是 SQLServer 2012。
【问题讨论】:
-
在您的链接中看起来很全面。如果您不想要重试代码,那么在源表上获取共享表锁定的其他选项呢?
-
是否有任何原因(除了节省一两分钟写出语句)您不能使用
CREATE TABLE语句显式创建表,然后使用INSERT INTO Table (columns) SELECT ...?我认为这可以解决您的问题,SELECT .. INTO ..可以为临时脚本节省大量时间,但我想不出在生产代码中使用它的任何情况。 -
虽然我能想到在生产代码中使用它的情况,但我主要同意 Gareth,如果在开发时列不可知,您始终可以将其构建和执行为动态 sql .
标签: sql sql-server select-into