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
.net SQL Server版本和顺序_.net_Sql Server_Sql Server 2012 - Fatal编程技术网

.net SQL Server版本和顺序

.net SQL Server版本和顺序,.net,sql-server,sql-server-2012,.net,Sql Server,Sql Server 2012,我正在使用多个表中的rowversion属性进行更改跟踪。周期性过程查询多个表,其中union all onrowversion转换为BIGINT数据类型(作为计算列)。然后,它记录读取的最高数字,并在下次查询时记录该较高数字 我观察到,在高并发情况下,几个线程正在写入,一个线程正在查询更改,有时它会读取一个更高的rowversion值,然后写入一个更低的值 版本较低的值永远不会被拾取,从而导致同步问题 rowversionmsdn上的文档说明 rowversion数据类型只是一个递增的数字 想

我正在使用多个表中的
rowversion
属性进行更改跟踪。周期性过程查询多个表,其中union all on
rowversion
转换为
BIGINT
数据类型(作为计算列)。然后,它记录读取的最高数字,并在下次查询时记录该较高数字

我观察到,在高并发情况下,几个线程正在写入,一个线程正在查询更改,有时它会读取一个更高的
rowversion
值,然后写入一个更低的值

版本较低的值永远不会被拾取,从而导致同步问题

rowversion
msdn上的文档说明

rowversion数据类型只是一个递增的数字

想知道在完成事务或启动事务时是否可以依赖增量


使用SQL Server 2012的默认事务隔离

无论事务何时提交,增量时间均为行更改时:

例如。(注意
@@dbts
是当前数据库行版本值。)

结果,请注意,
@@dbts
随着每次插入而递增,并且插入得到的递增值较高。一次交易中的所有交易

Microsoft SQL Server 2014 - 12.0.2254.0 (X64)
Jul 25 2014 18:52:51
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64>
(Build 7601: Service Pack 1) (Hypervisor) 

0x00000000000007D0
0x00000000000007D1
0x00000000000007D2
0x00000000000007D3

C   RV
1   0x00000000000007D1
2   0x00000000000007D2
3   0x00000000000007D3
Microsoft SQL Server 2014-12.0.2254.0(X64)
2014年7月25日18:52:51
版权所有(c)微软公司
Windows NT 6.1上的企业版(64位)
(构建7601:Service Pack 1)(虚拟机监控程序)
0x00000000000007D0
0x00000000000007D1
0x00000000000007D2
0x00000000000007D3
房车
1 0x00000000000007D1
2 0x00000000000007D2
3 0x00000000000007D3

所以我之所以在旧值之前看到新值(无序),是因为新事务在旧值之前提交?关于如何防止这种情况,你有什么想法吗?我不认为你能防止“无序”的
rowversion
numbers short不允许并发编写器。同步是一个困难的问题,我不知道如何解决。
Microsoft SQL Server 2014 - 12.0.2254.0 (X64)
Jul 25 2014 18:52:51
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64>
(Build 7601: Service Pack 1) (Hypervisor) 

0x00000000000007D0
0x00000000000007D1
0x00000000000007D2
0x00000000000007D3

C   RV
1   0x00000000000007D1
2   0x00000000000007D2
3   0x00000000000007D3