У нас есть 2 базы данных, например DB1 и DB2.
DB1 содержит все хранимые процедуры, которые также обрабатывают данные в DB2.
DB1 использует синонимы для доступа к таблицам в DB2.
(Использование синонимов является требованием в нашей ситуации)SQL Server: проблема транзакции моментальных снимков с синонимами в Express Edition
Это прекрасно работает во всех ситуациях с SQL Server 2005 Developer Edition.
Однако в Express Edition, мы получаем исключение, когда мы делаем следующее:
1 Перезапустите SQL Server
2 Выполните следующий код в DB1:
set transaction isolation level snapshot
begin transaction
declare @sQuery varchar(max)
set @sQuery = 'Select * from synToSomeTableInDB2'
exec (@sQuery)
commit transaction
Это приведет к следующим ошибка:
Snapshot isolation transaction failed in database '...' because the database was not recovered when the current transaction was started. Retry the transaction after the database has recovered.
Тот же запрос выбора проходит отлично при использовании без EXEC или при запуске в Developer Edition.
Перезапуск сервера на шаге 1 имеет важное значение, поскольку как только соединение было сделано с DB2, код также отлично работает в SQL Server Express Edition.
Есть ли у кого-нибудь идеи, что это? Нам нужно иметь возможность использовать EXEC для некоторых динамических запросов. Мы уже проверили MSDN, искали Google, ... Любая помощь с благодарностью.
--- Редактировать: March 10 09
Как уже обсуждалось с Эд Харпером, я опубликовал отчет об ошибке.
См https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=422150 сообщение
Перезагрузка требуется только для того, чтобы убедиться, что соединение с DB2 не было выполнено до этого. Ошибка происходит независимо от времени, прошедшего до тех пор, пока ранее не было установлено соединение с DB2. – Marc
Я проверил журнал сервера: ошибок нет. В нем говорится: «Восстановление завершено» и «Запуск DB1/DB2». Кажется, все в порядке. – Marc
Звучит как ошибка в Express. Можете ли вы обойти его, выполнив неудачную транзакцию после перезапуска службы базы данных. –