Удаленный доступ не поддерживается для снимка уровня изоляции транзакции - это условно?

Ребята - извините за перефразирование этой темы, как я вижу даже здесь, в стеке, по этой теме уже так много вопросов.

Но я нахожусь в интересном месте и надеюсь, что вы можете помочь.

Вопрос высокого уровня: может ли SQL SERVER иметь свободу действий, чтобы решить, что представление должно быть обернуто в SNAPSHOT УРОВНЯ ИЗОЛЯЦИИ?

Я знаю, это звучит как сумасшедший вопрос, но я пытаюсь исчерпать все возможности для проблемы, с которой я сталкиваюсь.

Я работаю с приложением, которое выполняет 35 запросов для извлечения данных из другой базы данных через Link Server. Запросы простые выборки для одной таблицы соответственно. Все операции с БД выполняются в отношении SQL SERVER, а поисковый код ADO.NET/c# и т. Д.

34 из запросов работают безупречно - но есть одно плохое яблоко, и для него я получаю проблему с моментальным снимком уровня изоляции транзакции.

Я также протестировал извлечение данных за пределами приложения, и когда я реализую приведенный ниже фрагмент кода для "проблемного" запроса, я также получаю проблему:

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

Однако, когда я НЕ реализую его по указанному запросу, все хорошо. Я также проверил это с другими запросами - с "Shapshot" и без него - и мои результаты предсказуемы... С "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

К сожалению, у меня нет собственного доступа к коду прикладной программы, отвечающему за поиск данных. Я подозреваю, что этот конкретный запрос / таблица имеет одно или несколько ключевых слов - либо в столбце, либо в именовании запроса / таблицы - которые запускают в приложении использование альтернативной стратегии поиска. На форумах разработчиков я спрашивал об этом случае, и я жду ответа...

В любом случае вернемся к их упоминанию о the optimizer may choose something different- их оптимизатор, или, возможно, оптимизатор базы данных? Можно ли настроить SQL SERVER для "суждения"? Является ли утверждение неясным или мне просто не хватает SQL SERVER и его возможностей?

Я знаю, это кажется сумасшедшим вопросом, но я действительно хочу выбить все возможные пути здесь. Спасибо за то, что приостановили ваше неверие и испортили этот сумасшедший пост:)

1 ответ

Решение

Очевидно, что объекты со словом "оценка" (возможно, из-за деликатного характера) приводят к тому, что приложение строит транзакцию. Как только я изменил имя представления, данные успешно вернулись к клиенту.

Так что да, приложение было / есть проблема.

Другие вопросы по тегам