В сетевой статье MSDN « Изоляция моментальных снимков в SQL Server » говорится:
- «Уровень изоляции имеет область действия всего соединения, и после установки для соединения с помощью инструкции SET TRANSACTION ISOLATION LEVEL он остается в силе до тех пор, пока соединение не будет закрыто или не будет установлен другой уровень изоляции. Когда соединение закрывается и возвращается в пул , уровень изоляции из последнего оператора SET TRANSACTION ISOLATION LEVEL сохраняется . Последующие соединения, повторно использующие соединение в пуле, используют уровень изоляции, который действовал во время соединения в пул »
Разве это не противоречивый абзац («до» против «оставлено»)?
Затем, если «уровень изоляции от последнего оператора SET TRANSACTION ISOLATION LEVEL сохраняется » после закрытия соединения и его возврата в пул, как это следует понимать:
- что уровень изоляции по умолчанию будет иметь произвольное значение (разные соединения в пуле будут иметь разные уровни изоляции, и его значение будет зависеть от того, какое соединение повторно открывается)?
- или все значения по умолчанию для всех соединений в пуле будут изменены на последние? но опять совершенно неизвестно перед рукой?
Не для меня, но я вижу, что есть другие способы прочитать это. Если вы хотите, чтобы документация была обновлена, чтобы сделать ее более понятной, надлежащее место, чтобы запросить это, находится в Microsoft Connect . Люди здесь не поддерживают документацию Microsoft.
Если вы повторно используете соединение в пуле, то да, «существующий» уровень изоляции - это тот уровень, который действовал, когда соединение в пуле было в последний раз закрыто. Рекомендуется явно устанавливать уровень изоляции, необходимый при подключении.
Нет.
источник
SQL Server 2014 теперь сбрасывает уровень изоляции подключений в пуле для большинства версий протокола TDS. Предыдущие версии SQL Server не сбрасывали уровень изоляции.
источник