事务隔离级别快照不支持远程访问 - 这是有条件的吗?

remote access is not supported for transaction isolation level snapshot - is this conditional?

伙计们 - 很抱歉重复这个话题,因为我什至在 Stack 上也看到了这个话题,关于这个话题已经有很多问题了。

但我发现自己处在一个有趣的地方,我希望你能提供帮助。

高级问题:SQL SERVER 是否可以决定将视图包装在 ISOLATION LEVEL SNAPSHOT 中?

我知道这听起来像是一个疯狂的问题,但我正在尝试针对我遇到的问题穷尽所有途径。

我正在使用一个运行 35 个查询的应用程序,通过 Link 服务器 从另一个数据库检索数据。这些查询分别是针对一个 table 的简单选择。所有DB操作都是针对SQLSERVER进行的,检索代码为ADO.NET/c#等

34 个查询完美运行 - 但有一个坏苹果,为此,我遇到了 事务隔离级别快照 问题。

我还在应用程序外部测试了数据检索,当我在 "problem" 查询中执行以下代码片段时,我也遇到了问题:

using (var trans = conn.BeginTransaction(IsolationLevel.Snapshot))

但是,当我 NOT 在所述查询上实施它时,一切都很好。 我还针对其他查询进行了测试 - 有和没有 "Shapshot" - 我的结果是 predictable... 有 "Shapshot" 到位,没有查询过程......当不已实施,所有查询处理...

我的结果表明该应用程序负责更改数据检索策略。

根据他们的知识库,我发现了这个:Locking is handled by the database level (MS SQL Server/Oracle) and not by "us". Generally, locking is row level but the optimizer may choose something different

不幸的是,我无法本地访问负责数据检索的样板应用程序代码。我怀疑这个特定的 query/table 有一个或多个关键字 - 在列或 query/table 命名中 - 触发应用程序使用另一种检索策略。根据开发者论坛,我已经询问过这种情况,我正在等待回复...

无论如何回到他们提到的 the optimizer may choose something different- 他们的优化器,或者可能是数据库优化器? SQL SERVER 可以设置成 "judgement call" 吗?是陈述不清楚还是我对 SQL SERVER 及其功能的了解不够?

我知道这似乎是一个疯狂的问题,但我真的想在这里找出所有可能的途径。 非常感谢您停止怀疑并幽默地表现出疯狂 post :)

显然,带有单词 "valuation" 的对象(可能是因为隐含的敏感性质)导致应用程序构建事务。我修改了视图名称后,数据成功返回给客户端。

所以是应用程序 was/is 问题。