SQL Сервер:Проблема с транзакцией моментального снимка с синонимами в Express Edition

StackOverflow https://stackoverflow.com/questions/614178

Вопрос

У нас есть 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, что база данных правильно восстанавливается после перезагрузки?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top