问题标签 [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.
sql-server - rowversion 是用于捕获表数据更改的事务一致值吗
如果 ETL 进程尝试通过将列定义的行包含rowversion
在rowversion
“增量窗口”内来检测 SQL Server 中系统版本表上的数据更改,例如:
@previous_etl_cycle_rowversion
..和的值@current_etl_cycle_rowversion
是从一个日志表中选择的,该表的最新值rowversion
在每个 ETL 周期开始时通过以下方式附加到所述日志表中:
...是否有可能由于的行为相对于事务一致性而错过/跳过
rowversion
落入给定“增量窗口”(由 2 个@@DBTS
值限制)内的记录?rowversion
- 即,是否有可能rowversion
反映在“最终”一致性的基础上?
我正在考虑这样一种情况,即在单个事务中更新了 1000 条记录,并且以某种方式@@DBTS
“提前”了记录的提交rowversion
,但该记录的特定版本尚不可读......
(为了确定问题的范围,请排除在如此大的批量事务中删除记录或立即连续更新给定记录的任何情况。)
sql - 通过不使用 SQL UPDATE 触及记录来更新数据库记录 rowversion?
我在SQL Server中有两个表TableA和TabelB,它们之间有外键关系,TableA定义了一个rowversion
列来同步事物。
rowversion
如果 TableB 中的对应记录发生变化,则需要更新TableA 的。目前它在 TableB 更新触发器中使用以下 SQL 代码实现:
由于Table Spool ,此更改给我的应用程序带来了非常糟糕的性能。并且更新 TableB 中的其他列将触发不同的行为。
所以我想知道是否有任何其他方法可以rowversion
通过不更新 TableA 列来更新 TableA 中的内容?非常感谢任何评论。
c# - 如何将ulong转换为rowversion
参考将 sql server rowversion 转换为 long 或 ulong? 我可以通过代码将 SQL RowVersion 转换为 ulong:
现在,我面临一个问题,如何将 ulong 转换为 byte [8]?我将 rowversion 的值保存到一个文件中,然后读取它并使用它来进行查询。查询参数应该是 byte[] ,而不是 ulong 。否则,将引发错误。
sql-server - 将 SQL Server 数据库迁移到 Azure SQL 数据库,保留行版本/时间戳
我们需要将数据库从 SQL Server 迁移到 Azure SQL 数据库。在这个数据库中,我们确实广泛使用行版本(时间戳)来与其他系统同步。因此,重要的是这些行版本保持不变。
通常,使用常规 BAK 文件恢复数据库将保留所有 rowversion 值。但是,我认为不可能使用这些备份文件来还原 Azure SQL 数据库中的数据。
我尝试了几种迁移数据的方法,都产生了新的 rowversion 值。试过的方法:
- 使用 SQL Management Studio 迁移(选项:将数据库部署到 Microsoft Azure SQL 数据库...)
- 使用 Microsoft 数据迁移助手工具
- 使用 Azure 门户导入 bacpac 文件
有没有办法将数据库从 SQL Server 迁移到 Azure SQL 数据库,同时保留行版本?如果没有,有没有办法增加数据库时间戳(@@DBTS),这样我们就可以确保新的 rowversions 的值总是大于原始的 rowversion 值?
postgresql - Postgres 中的存储过程实现而不是硬编码查询
极光 Postgres 11.9
在 SQL Server 中,我们严格遵循良好的编程实践,即“应用程序对 DB 的每个调用都将是一个存储过程,而不是简单的查询”。在Oracle中,我们还没有经历过同样的事情,可能是由于选择存储过程需要额外的游标,等等。
任何 Postgres 专家可以告诉我在这方面我们应该遵循什么做法以及在这种 Postgres 案例中的优缺点是什么?
此外,在 SQL Server 中,我们使用“rowversion”与 BI 和其他外部模块进行数据同步,Postgres 中是否有可用的内置替代方案,或者我们是否必须使用手动触发器来实现?
sql-server - 为什么 SSMS 中缺少 RowVersion 数据类型
我们有 SQL Server 2017,我们想在现有数据库中创建一个新字段
- 字段数据类型为 RowVersion
- 但使用 SQL Management Studio 我无法定义具有 RowVersion 数据类型的字段
- 我们可以使用时间戳
- 但据我所知,现在不推荐使用 TimeStamp 以支持 RowVersion
对此有何建议?
这是不包含 rowversion 的 DataType 列表:
编辑
现在我编写了以下脚本来创建一个具有 rowversion 列类型的新表:-
但是当我在 SQL 管理工作室 GUI 中打开表时 >> 新表中新列的类型将是时间戳而不是 rowversion + 如果我为新表生成创建脚本,我将得到:-
所以似乎rowversion可以用来创建表,但它会被转换为时间戳......问题是微软说时间戳已被弃用,我们应该使用rowversion来代替......完全令人困惑!
asp.net - asp:SqlDataSource 与 ROWVERSION (TIMESTAMP)
我遇到了 .NET(框架,带 WinForm 和 WebForms)/MS SQL 项目,其中数据库中的重要表包含一个 TIMESTAMP(又名 ROWVERSION)列(称为 tsModified)以防止并发问题。此外,该项目不允许应用层直接与表交互(相反,所有 CRUD 和业务逻辑都必须通过存储过程完成)。
让我发疯的一件事是如何在 UPDATE 期间使用可以解释 TIMESTAMP 列的 SqlDataSource。
CRUD procs 的基本形式如下:
当然,您可以手动定义部分类和方法来解释 tsModified,然后使用 asp:ObjectDataSource,但这是额外的工作。我只想方便地在表单上放置一个 asp:SqlDataSource,然后继续我的一天。
但是... SqlDataSource 不喜欢将 TIMESTAMP 作为参数。事实上,我确实花了几天时间研究如何使这项工作发挥作用,并遇到很多其他人遇到同样的问题。
我终于弄明白了。请参阅下面的答案。