none
Версионный режим работы базы (SQL 2005 SP2 Ent x64) RRS feed

  • Общие обсуждения

  • Добрый день!

     

    У меня несколько вопросов:

     

    Выполняю запрос:

    ALTER DATABASE DBNavision SET READ_COMMITTED_SNAPSHOT ON;

    Он по выполняется уже 11 часов. Сколько он примерно выполняется и как рассчитывать время выполнения подобного запроса?

     

    Перед этим переводил базу в режим версионности:

    ALTER DATABASE DBNavision SET ALLOW_SNAPSHOT_ISOLATION ON;

    А эффекта что-то вообще никакого - ошибки типа "данные заблокированы другим пользователем" никуда не пропали. Хотя в августе делал тестовый прогон - все было замечательно и без блокировок. Правда тогда был установлен SP1. Менялось ли что-нибудь в архитектуре SQL после SP2?

     

    Каким способом можно еще избежать блокировок в базе?

     

    Заранее спасибо!

    11 ноября 2008 г. 6:45

Все ответы

  •  

    Использование Snapshot – изоляции будет разрешено (ON) только после того, как выполняющиеся в настоящее время транзакции будут завершены. До этих пор состояние этой опции будет находиться в промежуточном состоянии: Pending_On (или Pending_Off при попытке отключить опцию).

    SQL Server 2005. Snapshot - изоляция транзакций

     

    Проверить наличие открытых в данный момент транзакций вы можете выполнив запрос:

    T-SQL запрос

    DBCC opentran

     

     

    Очередь блокировок можно увидеть выполнив запрос:

    T-SQL запрос
    sp_who2

     

     

    Убить "мешающий" процесс:

    T-SQL запрос
    kill 55

     

     

    Или просто перезагрузите сервер БД (если есть такая возможность) и повторите запрос

    T-SQL запрос
    ALTER DATABASE DBNavision SET READ_COMMITTED_SNAPSHOT ON

     

     

    11 ноября 2008 г. 11:53
  •  

    Про: ALTER DATABASE DBNavision SET READ_COMMITTED_SNAPSHOT ON

    Выполняется он моментально, режим пединг_он прохидит втечение нескольких секунд, и включается режим версионности.

    Подтверждается это запросом:

    Select name, snapshot_isolation_state, snapshot_isolation_state_desc from sys.databases

    Который возвращает:DBNavision, 1, ON

     

    Запрос ALTER DATABASE DBNavision SET READ_COMMITTED_SNAPSHOT ON у меня выполняется уже 16,5 часов. Рекомендуете перезапустить сервер и выполнить первой же операцией? Т.е. он должен пройти также быстро, как и аллоу снапшот изолейшн (секунд 5)?

    11 ноября 2008 г. 12:05
  •  

    Включил снапшот изоляцию и рид коммитед режимы для БД.

    ==

    Теперь понял, что нужно для каждой конкретной транзакции использовать следующие режимы:

    SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

    SET TRANSACTION ISOLATION LEVEL SNAPSHOT;

    ==

    Есть ли способ установить эти режимы для всех транзакций?

     

    Поясню почему такой странный запрос: у меня стоит MBS Navision, изапросы в базу там редактировать нельзя на уровне транзакций. в результате блокировок не избежать. А вот еслибы общий режим транзакций как-то изменить - скорость бы выстрелила.

    12 ноября 2008 г. 16:01