问题标签 [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.

0 投票
2 回答
286 浏览

sql-server - rowversion 是用于捕获表数据更改的事务一致值吗

如果 ETL 进程尝试通过将列定义的行包含rowversionrowversion“增量窗口”内来检测 SQL Server 中系统版本表上的数据更改,例如:

@previous_etl_cycle_rowversion..和的值@current_etl_cycle_rowversion是从一个日志表中选择的,该表的最新值rowversion在每个 ETL 周期开始时通过以下方式附加到所述日志表中:

...是否有可能由于的行为相对于事务一致性而错过/跳过rowversion落入给定“增量窗口”(由 2 个@@DBTS值限制)内的记录?rowversion- 即,是否有可能rowversion反映在“最终”一致性的基础上?

我正在考虑这样一种情况,即在单个事务中更新了 1000 条记录,并且以某种方式@@DBTS“提前”了记录的提交rowversion,但该记录的特定版本尚不可读......

(为了确定问题的范围,请排除在如此大的批量事务中删除记录或立即连续更新给定记录的任何情况。)

0 投票
1 回答
159 浏览

sql-server - Rowversion 字段导致 BULK INSERT 仅导入每隔一行

当我对带有 rowversion 字段的表执行 BULK INSERT 时,只有每隔一行才会被导入。

这是我的源文本文件:

在此处输入图像描述

如果我对带有 rowversion 字段的表执行 BULK INSERT,则只导入两行:

在此处输入图像描述

但是,如果我执行完全相同的操作但注释掉 rowversion 字段,则会导入所有四行:

在此处输入图像描述

这是 SQL Server 中的错误吗?难道我做错了什么?有没有办法批量插入到具有 rowversion 列的表中?

0 投票
0 回答
194 浏览

sql - 通过不使用 SQL UPDATE 触及记录来更新数据库记录 rowversion?

我在SQL Server中有两个表TableA和TabelB,它们之间有外键关系,TableA定义了一个rowversion列来同步事物。

rowversion如果 TableB 中的对应记录发生变化,则需要更新TableA 的。目前它在 TableB 更新触发器中使用以下 SQL 代码实现:

由于Table Spool ,此更改给我的应用程序带来了非常糟糕的性能。并且更新 TableB 中的其他列将触发不同的行为。

所以我想知道是否有任何其他方法可以rowversion通过不更新 TableA 列来更新 TableA 中的内容?非常感谢任何评论。

0 投票
1 回答
87 浏览

c# - 如何将ulong转换为rowversion

参考将 sql server rowversion 转换为 long 或 ulong? 我可以通过代码将 SQL RowVersion 转换为 ulong:

现在,我面临一个问题,如何将 ulong 转换为 byte [8]?我将 rowversion 的值保存到一个文件中,然后读取它并使用它来进行查询。查询参数应该是 byte[] ,而不是 ulong 。否则,将引发错误。

0 投票
0 回答
93 浏览

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 值?

0 投票
0 回答
58 浏览

postgresql - Postgres 中的存储过程实现而不是硬编码查询

极光 Postgres 11.9

在 SQL Server 中,我们严格遵循良好的编程实践,即“应用程序对 DB 的每个调用都将是一个存储过程,而不是简单的查询”。在Oracle中,我们还没有经历过同样的事情,可能是由于选择存储过程需要额外的游标,等等。

任何 Postgres 专家可以告诉我在这方面我们应该遵循什么做法以及在这种 Postgres 案例中的优缺点是什么?

此外,在 SQL Server 中,我们使用“rowversion”与 BI 和其他外部模块进行数据同步,Postgres 中是否有可用的内置替代方案,或者我们是否必须使用手动触发器来实现?

0 投票
1 回答
118 浏览

sql-server - 为什么 SSMS 中缺少 RowVersion 数据类型

我们有 SQL Server 2017,我们想在现有数据库中创建一个新字段

  • 字段数据类型为 RowVersion
  • 但使用 SQL Management Studio 我无法定义具有 RowVersion 数据类型的字段
  • 我们可以使用时间戳
  • 但据我所知,现在不推荐使用 TimeStamp 以支持 RowVersion

对此有何建议?

这是不包含 rowversion 的 DataType 列表:

在此处输入图像描述

编辑

现在我编写了以下脚本来创建一个具有 rowversion 列类型的新表:-

但是当我在 SQL 管理工作室 GUI 中打开表时 >> 新表中新列的类型将是时间戳而不是 rowversion + 如果我为新表生成创建脚本,我将得到:-

所以似乎rowversion可以用来创建表,但它会被转换为时间戳......问题是微软说时间戳已被弃用,我们应该使用rowversion来代替......完全令人困惑!

0 投票
1 回答
32 浏览

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 作为参数。事实上,我确实花了几天时间研究如何使这项工作发挥作用,并遇到很多其他人遇到同样的问题。

我终于弄明白了。请参阅下面的答案。