Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 存储过程-截断表_Sql Server_Tsql_Stored Procedures - Fatal编程技术网

Sql server 存储过程-截断表

Sql server 存储过程-截断表,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,我创建了一个存储过程来向表中添加数据。以模拟方式,步骤如下: 截断原始表 将数据选择到原始表中 将数据选择到原始表中的查询相当长,几乎需要一分钟才能完成,这意味着该表将在一分钟以上没有数据 要修复此空表,我将存储过程更改为: 在临时表中选择数据 截断原始表 将*从临时文件插入原始文件 当存储过程运行时,我在原始表上执行了select*,它是空的,在存储过程完成之前它一直是空的 截断是否发生在过程的开头,而不管它实际上在代码中的什么位置?如果是这样的话,我还可以做些什么来控制数据何时被删除?一个非

我创建了一个存储过程来向表中添加数据。以模拟方式,步骤如下:

截断原始表 将数据选择到原始表中 将数据选择到原始表中的查询相当长,几乎需要一分钟才能完成,这意味着该表将在一分钟以上没有数据

要修复此空表,我将存储过程更改为:

在临时表中选择数据 截断原始表 将*从临时文件插入原始文件 当存储过程运行时,我在原始表上执行了select*,它是空的,在存储过程完成之前它一直是空的

截断是否发生在过程的开头,而不管它实际上在代码中的什么位置?如果是这样的话,我还可以做些什么来控制数据何时被删除?

一个非常有趣的方法是使用分区切换将数据快速移动到表中

使用myStaging2中的新数据创建两个临时表myStaging1和myStaging2。它们必须位于同一个DB和同一个文件组中,因此不是临时表或表变量,而是

然后运行以下命令:

设置XACT_ABORT,不计数为ON;-如果会话被终止,则强制立即回滚 开始训练; 将表myTargetTable开关更改为myStaging1 当等待\u处于\u低\u优先级时,最大\u持续时间=1分钟,等待\u后中止\u=阻塞器; -不一定要在低优先级时使用WAIT\u,但最好是阻塞 -使用SELF而不是拦截器终止您自己的会话 将表myStaging2切换为myTargetTable 当等待\u处于\u低\u优先级时,最大\u持续时间=0分钟,等待=阻塞器后中止\u; -马上把拦截器赶走 提交传输; 截断表myStaging1; 这非常快,因为这只是一个元数据更改

您会问:分区仅在Enterprise Edition或Developer上受支持,这有什么帮助

即使在标准版或快速版中,也允许在彼此之间切换非分区表


有关此技术的更多信息,请参阅。

HTTP Get中的代码正在调用sp,因此我不希望在刷新期间该表空一分钟以上。当我问这个问题时,我使用表中的select*进行测试,但刚才我通过在postman中点击端点进行测试,我从未收到一个空的响应。因此,稍后将截断放在sp中似乎起到了作用。

tmp中有多少条记录?SQL语句是按顺序执行的,因此截断是在插入temp表完成后发生的。@Saeed表中有77000条记录。sp是通过HTTP Get中的代码调用的,所以我不想在刷新期间桌子空了一分钟以上。当我问这个问题时,我使用表中的select*进行测试,但刚才我通过在postman中点击端点进行测试,我从未收到一个空的响应。因此,将截断放在sp的后面似乎起了作用。这改变了生活!虽然这可能非常有用,但它不能回答或解决问题。@RedDogsRock为什么这对您没有帮助?