Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных / 8 сообщений из 8, страница 1 из 1
28.04.2018, 10:37
    #39637905
Antw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
Всем привет.
У меня приложение WCF, в котором открывается транзакция на базу данных sql. На базе данных ms sql 2016 (SP1) я устанавливаю параметр SET TRANSACTION ISOLATION LEVEL
в READ UNCOMMITTED, но на выполнение транзакций и на доступ к данным по select это никак не влияет (транзакция блокирует таблицу и данные невозможно прочитать). Так же я пробовал устанавливать параметр IsolationLevel.ReadUncommitted в BeginTransaction, но это тоже не помогает. Однако, если установить with (READUNCOMMITTED) для отдельных Select запросов, то все работает как надо и данные запрашиваются. По какой причине может не работать установка общего параметра IsolationLevel ни на базе данных, ни через код?
...
Рейтинг: 0 / 0
28.04.2018, 10:59
    #39637913
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
Antw,

На базе данных вы не можете поменять уровень по умолчанию (если не брать snapshot).
Также не понятно что, где и как вы устанавливатет, у уровня изоляции тоже есть свой scope.
If you issue SET TRANSACTION ISOLATION LEVEL in a stored procedure or trigger, when the object returns control the isolation level is reset to the level in effect when the object was invoked. For example, if you set REPEATABLE READ in a batch, and the batch then calls a stored procedure that sets the isolation level to SERIALIZABLE, the isolation level setting reverts to REPEATABLE READ when the stored procedure returns control to the batch
...
Рейтинг: 0 / 0
28.04.2018, 11:04
    #39637914
ЛиП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
SqlConnection.BeginTransaction Method (IsolationLevel) ?
...
Рейтинг: 0 / 0
28.04.2018, 11:10
    #39637921
Antw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
aleksrov,

Первым способом на базе данных я указываю команду SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED, после чего проверяю командой dbcc useroptions настройки и вижу установку read uncommitted в параметре isolation level в настройках БД.

Вторым способом с кода c# при открытии транзакции:
connection.BeginTransaction(IsolationLevel.ReadUncommitted);
я проставляю IsolationLevel.

Запросы я вызываю с сервера через ExecuteReader и ExecuteNonQuery.

По msdn этого должно быть достаточно, чтобы поменять IsolationLevel на БД. Или я ошибаюсь?
...
Рейтинг: 0 / 0
28.04.2018, 11:19
    #39637926
Antw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
aleksrov,

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED на БД устанавливается только для текущего конекшена. Понял, спасибо.
НО уставновка с кода c# connection.BeginTransaction(IsolationLevel.ReadUncommitted); все равно не работает.
...
Рейтинг: 0 / 0
28.04.2018, 11:20
    #39637927
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
SET TRANSACTION ISOLATION LEVEL устанавливает уровень изоляции для текущей сессии. dbcc useroptions так же показывает настройки текущей сессии.
...
Рейтинг: 0 / 0
28.04.2018, 11:23
    #39637931
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
AntwВсем привет.
У меня приложение WCF, в котором открывается транзакция на базу данных sql. На базе данных ms sql 2016 (SP1) я устанавливаю параметр SET TRANSACTION ISOLATION LEVEL
в READ UNCOMMITTED, но на выполнение транзакций и на доступ к данным по select это никак не влияет (транзакция блокирует таблицу и данные невозможно прочитать). Так же я пробовал устанавливать параметр IsolationLevel.ReadUncommitted в BeginTransaction, но это тоже не помогает. Однако, если установить with (READUNCOMMITTED) для отдельных Select запросов, то все работает как надо и данные запрашиваются. По какой причине может не работать установка общего параметра IsolationLevel ни на базе данных, ни через код?

Т.е. религиозные убеждения не дозволяют использовать Profiler?
...
Рейтинг: 0 / 0
28.04.2018, 11:24
    #39637932
Antw
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных
Гавриленко Сергей Алексеевич,

это я понял, спасибо
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нет результата от установки SET TRANSACTION ISOLATION LEVEL на базе данных / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]