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

问题描述 投票:-1回答:1

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

我试图查询它里面MS SQL Server和它是好的与它没有任何问题。但是,当我用C#试了一下它产生的错误。我不敢尝试其他的解决方案,因为它是一个重要的时间让我陷入困境。

链接的服务器数据库是在Microsoft Dynamics AX一个标准的数据库,我想我不应该改变它只是为了让我的任务工作。

我只是想用加倍的所有你们这些家伙,我正在寻找您的建议检查。你认为SET ALLOW_SNAPSHOT_ISOLATION ON是最好的解决办法?

https://imgur.com/a/uJBmunz

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

c# sql-server axapta linked-server
1个回答
0
投票

看来您是在分布式事务中登记。该错误是告诉你,你正在尝试做的不是SQL Server支持,因此,我会建议另一种方法是改变你的事务隔离级别,以不同的东西,像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 Server文档中的详细信息:https://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql?view=sql-server-2017#remarks

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

© www.soinside.com 2019 - 2024. All rights reserved.