Запрос в связанном сервере проблема - Удаленный доступ не поддерживается для уровня изоляции транзакции "SNAPSHSHOT" - PullRequest
0 голосов
/ 03 февраля 2019

Моя проблема в том, что я соединяю таблицу из текущей таблицы базы данных SQL Server и Linked Server в своем запросе.

Я попытался запросить его внутри MS SQL Server, и с ним все было в порядке.Но когда я попробовал это с C #, это произвело ошибку.Я боюсь пробовать другие решения, потому что для меня настало критическое время.

База данных связанного сервера - это стандартная база данных в Microsoft Dynamics AX, и я полагаю, что мне не следует изменять ее только для того, чтобы моя задача работала.

Я просто хочу проверить это со всемиребята, я ищу ваши предложения.Вы думаете, что SET ALLOW_SNAPSHOT_ISOLATION ON - лучшее решение?

https://imgur.com/a/uJBmunz

Мой ожидаемый результат - просто выполнить мой запрос без ошибок.

1 Ответ

0 голосов
/ 04 февраля 2019

Похоже, что вы зачислены на распределенную транзакцию.Ошибка говорит вам, что то, что вы пытаетесь сделать, не поддерживается сервером 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://docs.microsoft.com/en-us/sql/t-sql/language-elements/begin-distributed-transaction-transact-sql?view=sql-server-2017#remarks

Там вы видите, что «изоляция моментальных снимков» не поддерживается в распределенных транзакциях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...