我的任务是将列添加到特定位置的表中。
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每小时选择查询
答案 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
通过这种方式,您可以在旧表格
中的新表格中动态创建所需的列