SQL 服务器中作业执行的原子性
Atomicity of a job execution in SQL Server
我想找到合适的文档来确认我对最近写的 SQL 服务器作业的想法。我担心数据可能会在几毫秒内不一致(作业执行开始和结束之间的时间)。
假设作业设置为每 30 分钟 运行。使用以下 SQL 语句只有一个步骤:
DELETE FROM myTable
INSERT INTO myTable
SELECT *
FROM myTableTemp
是否会发生 SELECT
查询恰好在 DELETE
语句和 INSERT
语句之间执行并因此返回空结果?
如果我在工作中创建 2 个步骤,一个用于 DELETE
查询,另一个用于 INSERT INTO
,会怎样?在一个作业的几个步骤之间,原子性是否受到 SQL 服务器的保护?
感谢您对此的帮助
不,没有自动原子处理作业,无论它们是多语句还是步骤。
使用这个:
begin transaction
delete...
insert....
... anything else you need to be atomic
commit work
我想找到合适的文档来确认我对最近写的 SQL 服务器作业的想法。我担心数据可能会在几毫秒内不一致(作业执行开始和结束之间的时间)。
假设作业设置为每 30 分钟 运行。使用以下 SQL 语句只有一个步骤:
DELETE FROM myTable
INSERT INTO myTable
SELECT *
FROM myTableTemp
是否会发生 SELECT
查询恰好在 DELETE
语句和 INSERT
语句之间执行并因此返回空结果?
如果我在工作中创建 2 个步骤,一个用于 DELETE
查询,另一个用于 INSERT INTO
,会怎样?在一个作业的几个步骤之间,原子性是否受到 SQL 服务器的保护?
感谢您对此的帮助
不,没有自动原子处理作业,无论它们是多语句还是步骤。
使用这个:
begin transaction
delete...
insert....
... anything else you need to be atomic
commit work