问题标签 [rowversion]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
entity-framework - 实体框架中的行版本比较
rowversion
我应该如何使用实体框架比较字段?我有一个包含一rowversion
列的表,我想从行版本高于指定值的表中获取数据。
此行不起作用,它会引发错误:
运算符 '>' 不能应用于 'byte[]' 和 'byte[]' 类型的操作数
知道如何比较rowversion
C#/Entity Framework 中的字段吗?
sql-server - SQL server ROWVERSION 定义不准确?
来自msdn
每个数据库都有一个计数器,对于在数据库中包含 rowversion 列的表执行的每个插入或更新操作,该计数器都会递增。
还
要返回数据库的当前 rowversion 值,请使用 @@DBTS。
我有一个数据库(相信我它只有一个表,没有时间戳/行版本字段)
但是当我运行 select @@DBTS 时,我得到的结果好像我有一个 rowversion 列:
(ps - 插入/更新 - 不更新此值)。
这个值是多少?
为什么我没有 rowversion 列?
entity-framework - 具有实体框架并发的清洁域模型为什么我被迫使用 RowVersion?
嗨,有一个干净整洁的域模型。如:
为什么 Entity Framework 强制我使用 RowVersion 属性污染域模型以提供并发性?
我的模型不想或不需要知道这一点,那么我为什么要被迫使用它呢?是否有另一种方法来执行并发检查?如果是这样,它比添加行版本更好/更差还是更快/更慢?或者我可以在不在域模型中的其他地方添加 RowVersion。我正在使用 EF 4.1 和流利的 api。
谢谢
sql-server - ServiceStack Ormlite 和 RowVersion 支持
在更新期间支持 sql server rowversion 的最简单方法是什么?
我试过这个:
但这失败得很惨,因为它将版本比较为Varchar(8000)
, go figure。
不完全相同,但仍然是 ServiceStack 和 OrmLite 的问题:
急切加载相关实体描述的最佳方式是什么?我已经看到了,但注意到Join
正在签入变更集?这导致 POCO 类现在对每个外键都有额外的“忽略”描述。
tsql - 使用“rowversion”作为主键列
我正在使用 SQL Server 2012,并且我想创建一个“更改”表 - 当第二个表列值发生更改时,它将使用来自其他表的数据填充。
我正在向“更改”表中添加“datatime2”和“rowversion”列,以便跟踪何时进行更改。
可以使用“rowversion”作为主键吗?
我在这里读到,如果当前行已更新,它将被更改,这就是为什么它不是“主键”使外键无效的好候选者。
无论如何,如果它不会用作外键并且“更改”表的行将永远不会被更新(只会插入新行)是可以使用“rowversion”作为PK还是我应该使用附加列?
tsql - T-SQL“时间戳”覆盖“rowversion”数据类型列
我正在使用 Miscrosoft SQL Server 2012,因为在这篇文章中说:
时间戳语法已弃用。此功能将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。
我决定使用“rowversion”列而不是“timestamp”列。所以,我创建了下表:
一切看起来都很好,直到我按下“ALT+F1”组合,它为我提供了有关我的表的信息(如列详细信息),并且我看到“RowVersionID”列被标记为“timestamp”类型。
我所做的下一个想法是使用 SQL Server Management Studio 2012“删除并创建我的表”,“生成的 SQL”改变了我的原始查询,如下所示:
为什么服务器没有使用我最初设置的类型,为什么在文章中我被建议不要使用“时间戳”,但服务器以某种方式选择了它?
c# - 更新后获取 RowVersion
我使用带有行版本的 Entity Framework 4。我想更新一行,然后接收新的行版本。
我可以在不重新访问数据库中的行的情况下做到这一点吗?
sql - SQL MIN_ACTIVE_ROWVERSION() 值长时间不变
我们正在通过链接服务器连接对两个 SQL Server 数据库、不同服务器(均为 SQL Server 2008 Enterprise 64 位 SP2 - 10.0.4000.0)中的一种同步框架进行故障排除,我们达到了排序的点卡住了。
识别哪些是“待同步”记录的逻辑当然是基于ROWVERSION
值,包括MIN_ACTIVE_ROWVERSION()
避免脏读的使用。
所有SELECT
操作都封装在每个“源”端的 SP 中。这是一个 SP 的示意图示例:
该方法工作得很好,我们通常以 600k/小时的预期速率同步记录(作业每 30 秒,批量大小 = 5k),但在某些时候,同步过程找不到任何要传输的单条记录,即使有几千条记录的ROWVERSION
值大于@LastStamp
参数。
在检查原因时,我们发现MIN_ACTIVE_ROWVERSION()
的值小于(或略大于,仅 5 或 10 个增量)@LastStamp
正在搜索的值。这当然不应该是一个问题,因为MIN_ACTIVE_ROWVERSION()
引入该方法是为了避免脏读和后期问题,但是:
我们在某些情况下看到的问题,在上述场景发生期间,是MIN_ACTIVE_ROWVERSION()
在很长(非常长)的时间段内,例如 30/40 分钟,有时超过一小时,的值不会改变。而这个价值远远低于@@DBTS
价值。
我们首先认为这与尚未提交的待处理数据库事务有关。根据关于MIN_ACTIVE_ROWVERSION()
(链接)的 MSDN 定义:
返回当前数据库中的最低活动 rowversion 值。如果在尚未提交的事务中使用 rowversion 值,则它是活动的。
但是在此问题期间检查会话 ( sys.sysprocesses
)open_tran > 0
时,我们找不到任何等待时间大于几秒的会话,只有一两次出现 +/- 5 分钟的等待时间会话。
所以在这一点上,我们正在努力理解这种情况:MIN_ACTIVE_ROWVERSION()
在很长一段时间内没有变化,并且在这个时间范围内没有发现长时间等待的未提交事务。
我不是 DBA,可能是我们在图片中遗漏了一些东西来分析这个问题,在论坛和博客上做一些研究找不到任何其他线索。到目前为止, open_tran > 0 是正当的原因,但在我暴露的情况下,很明显还有别的东西,不知道为什么。
任何反馈表示赞赏。
c# - NHibernate 中的行版本控制
我正在开发一个社交应用程序,它将为用户提供创建消息墙(如在 FB 上)并邀请他们的朋友。我的数据库中有一个表,其中包含墙壁及其版本(在 TimeStamp 中),这意味着 - 它们的最后更新时间。
当有人更新墙时,版本将被更新,我希望用户收到此版本。我正在使用 NHibernate 并将我的版本行定义为版本类型,但我找不到更新行并在一个原子操作中接收新版本的方法,以防止并发问题。
有没有办法做到这一点?有没有更好的方法来解决这个问题?
sql-server - 在 SQL Server 上索引 rowversion/timestamp 列的后果
与我之前关于没有临时漏洞的序列(保证读者可见的数字始终在增加)的问题相关,请在此处输入链接描述,我想问一下我设计的解决方案是否有意义。
我创建了一个带有rowversion
列的表。如果我正确理解这一点,SQL Server 保证这些值将始终递增。因为这只是一堆字节,所以像WHERE RowVer > 1567
这样的查询需要强制转换,因此会导致表扫描。
所以我创建了一个可以进行强制转换的索引视图,我正在查询该视图。从表面上看,它可以工作(查询计划显示索引搜索),但我不确定如果我通过索引,始终递增的保证是否仍然适用。请帮忙。
编辑
它在调试时似乎工作正常,但插入到我的表中会阻止任何针对它的选择。需要调查持有什么样的锁。