在链接服务器中查询问题 - 事务隔离级别不支持远程访问 "SNAPSHSHOT"



我的问题是我在查询中联接了当前 SQL Server 和链接服务器数据库表中的表。

我尝试在MS SQL Server中查询它,没问题。但是当我尝试使用 C# 时,它产生了一个错误。我害怕尝试其他解决方案,因为这是我搞砸的关键时刻。

链接服务器数据库是 Microsoft Dynamics AX 中的标准数据库,我想我不应该仅仅为了让我的任务正常工作而更改它。

只是想和你们所有人仔细检查一下,我正在寻求你们的建议。您认为 SET ALLOW_SNAPSHOT_ISOLATION ON 是最好的解决方案吗?

https://i.stack.imgur.com/NU721.jpg

我的

预期结果只是执行我的查询而没有错误。

您似乎加入了分布式事务。该错误告诉您SQL服务器不支持您尝试执行的操作,因此,我建议的替代方法是将事务隔离级别更改为其他级别,例如READ COMMITTED

如果您使用 System.Trasactions 进行事务控制,请尝试如下操作:

var transactionOptions = new TransactionOptions
{
    IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted
};
using (var tran = new TransactionScope(TransactionScopeOption.Required, transactionOptions))
{
    // Database access logic goes here...
}

或者,如果您使用的是 SqlTransaction 类:

using (var cn = new SqlConnection())
{
    cn.Open();
    using (var tran = cn.BeginTransaction(System.Data.IsolationLevel.ReadCommitted))
    {
        // Database access logic...
    }
}

您可以在官方 SQL 服务器文档中找到更多详细信息:https://learn.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql?view=sql-server-2017#remarks

在那里,您可以看到分布式事务不支持"快照隔离"。

最新更新