SQL Сервер:Проблема с транзакцией моментального снимка с синонимами в Express Edition
-
03-07-2019 - |
Вопрос
У нас есть 2 базы данных, скажем, DB1 и DB2.
DB1 содержит все хранимые процедуры, которые также обращаются к данным в DB2.
DB1 использует синонимы для доступа к таблицам в DB2.
(Использование синонимов является обязательным требованием в нашей ситуации)
Это прекрасно работает во всех ситуациях с SQL Server 2005 Developer Edition.
Однако в экспресс-версии мы получаем исключение, когда выполняем следующее:
1 Перезапустите SQL Server
2 Выполните следующий код в DB1:
установить моментальный снимок уровня изоляции транзакции
начать транзакцию
объявить переменную @sQuery(максимум)
set @sQuery = 'Выбрать * из synToSomeTableInDB2'
исполнительный директор (@sQuery)
зафиксировать транзакцию
Это приведет к следующей ошибке:
Сбой транзакции изоляции моментального снимка в базе данных "...", поскольку база данных не была восстановлена при запуске текущей транзакции.Повторите транзакцию после восстановления базы данных.
Один и тот же запрос select проходит нормально при использовании без EXEC или при запуске в версии разработчика.
Перезапуск сервера на шаге 1 важен, поскольку после установления соединения с DB2 код также отлично выполняется на SQL Server Express Edition.
У кого-нибудь есть идеи, что это такое?Нам нужно иметь возможность использовать EXEC для некоторых динамических запросов.Мы уже проверили MSDN, поискали в Google, ...Мы очень ценим любую помощь.
--- Редактировать:10 09 Марта
Как обсуждалось с Эдом Харпером ниже, я отправил отчет об ошибке для этого.
Видишь https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx ?Идентификатор обратной связи=422150
Решение
Как выяснилось через Microsoft Connect, проблема в том , что по умолчанию в версии SQL Server Express АВТОМАТИЧЕСКОЕ ЗАКРЫТИЕ опция установлена на верно.
Меняем этот параметр на ложь устраняет проблему.
Другие советы
Сообщение об ошибке предполагает, что запрос выполнен с ошибкой, поскольку SQL server все еще восстанавливает базу данных после перезапуска службы при выполнении вашего запроса.
Всегда ли ошибка возникает при первой попытке запуска этого кода, независимо от времени, прошедшего с момента перезапуска службы?
Можете ли вы подтвердить из журнала SQL Server, что база данных правильно восстанавливается после перезагрузки?