РЕЗЕРВНОЕ КОПИРОВАНИЕ SQL Server 2008 с ВКЛ. IMPLICIT_TRANSACTIONS - PullRequest
0 голосов
/ 08 декабря 2010

это не вопрос для решения как такового, я пытаюсь понять очень странное поведение в Management Studio.

Я полностью понимаю, что базы данных BACKUP и RESTORE не могут быть выполнены в транзакции, и каковы последствия SET IMPLICIT_TRANSACTIONS ON.

Итак, я провел эксперимент:

  • открыл Management Studio, перешел в Параметры / Выполнение запроса / SQL Server / ANSI и поставил галочку напротив SET IMPLICIT_TRANSACTIONS
  • вновь открыт Management Studio
  • вошел в систему с пользователем, чья база данных по умолчанию - master
  • выполнил BACKUP, и это сработало нормально
  • изменил базу данных на что-то другое
  • выполнил BACKUP и не удалось с сообщением

    Сообщение 3021, Уровень 16, Состояние 0, Строка 7 Невозможно выполнить операцию резервного копирования или восстановления в транзакции. Сообщение 3013, уровень 16, состояние 1, строка 7 РЕЗЕРВНАЯ БАЗА ДАННЫХ завершается ненормально.

  • переход на мастер не избавляет от сообщения об ошибке

У меня вопрос - почему он позволяет выполнить BACKUP сразу после подключения и не работает после изменения базы данных?

1 Ответ

2 голосов
/ 08 декабря 2010

BACKUP не может быть в транзакции

Оператор BACKUP не допускается в явной или неявной транзакции.

При измененииВне базы данных от мастера вы вводите одну из команд, описанных в SET IMPLICIT_TRANSACTIONS ON (используйте SQL Profiler для просмотра), и создаете транзакцию.

Исходя из опыта (без фактической проверки!), Это будет SELECT для Intellisense или Object Explorer или для получения других метаданных.Я также предполагаю, что что-то вроде Intellisense не используется для системных баз данных (я отключаю эту чертову штуку и использую сторонние инструменты), так что это не происходит изначально

Последующие ошибки происходят, потому что вы все ещев транзакции

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