【发布时间】:2018-03-02 21:03:12
【问题描述】:
我正在通过 .NET Entity Framework 更新一个 SQL Server 表(比如 table1)。 table1 定义了一个更新触发器,用于更新 table2 上的数据。然后在保存更改后,会生成一个 SSRS 报告,该报告使用表 2 中的更新数据。
所有这些看起来都很好并且工作正常。
但是,偶尔在部署的应用程序中,我看到生成的报告会获取 table2 值,这些值是触发器执行之前的值。
到目前为止,我的理解是触发器是同步的,因此无法理解这个时间问题背后的原因。如果您有任何补救建议,也将不胜感激。
使用 .NET Framework 4.6、SQL Server 2014
【问题讨论】:
-
您是否使用 NOLOCK 提示?这里的细节很少,所以我们大多是在猜测。
-
@SeanLange,我在检索报告数据时没有使用 NOLOCK 提示。当我在保存更改后调用报告时,不使用 NOLOCK 提示不应该没问题吗?抱歉,这个问题非常高级,因为我只想以简单的方式开始布局操作序列。
-
你绝对不想要 NOLOCK。我希望它会那么简单,但唉。您是在触发器中还是在代码中运行报告?您是否 100% 在更新完成之前不调用报告?您的报告查询是否有 NOLOCK 提示?
-
我正在使用 SSRS API 在我的 .NET 代码中生成报告,该 API 在完成保存实体框架上下文对象的更改时被调用。报告查询没有 NOLOCK 提示。
标签: asp.net sql-server