SQL Server在删除/创建表序列期间插入

时间:2016-09-27 21:54:09

标签: sql .net sql-server

我的任务是将列添加到特定位置的表中。

CREATE TABLE dbo.[Tmp_SomeTableName]
(
some schema
)

INSERT INTO dbo.[Tmp_SomeTableName]
(
SELECT [New column order here] from  dbo.[SomeTableName]
)

DROP TABLE dbo.[SomeTableName]

EXECUTE sp_rename N'dbo.[Tmp_SomeTableName]', N'SomeTableName','OBJECT' 

我的问题很简单,MSSQL会用

做什么
INSERT INTO dbo.[SomeTableName]

表重建正在进行中?它会排队插入并在重建结束时发送它们吗?或者我应该期待sql异常(以及无法插入数据)?

注意:平均而言,相关表格每分钟流量约为20次。没有在表上运行更新查询,并且< 5每小时选择查询

2 个答案:

答案 0 :(得分:0)

由于该表不存在,您将获得SQL异常。你的SQL脚本/ procs无法知道表是否处于'limbo',只要他们担心表不存在而且这是一个错误。

编辑:可以在视图中插入,因此您可以执行以下操作: 创建一个针对原始表的视图,该表由脚本/ procs用于插入。然后,当您需要时,创建第二个表,更新视图以指向此第二个表,以便插入可以继续。然后更新原始表并将视图指回原始表,并移动在此期间收集的数据。 https://msdn.microsoft.com/en-GB/library/ms180800.aspx

答案 1 :(得分:0)

您可以使用

动态创建新表
select [fields] into new_Table from  old_table [join another_old_table]. . . .

这里记录了

https://msdn.microsoft.com/en-us/library/ms188029.aspx

通过这种方式,您可以在旧表格

中的新表格中动态创建所需的列