Я написал сценарий миграции данных, в котором я проверяю, выполняется ли предыдущая миграция данных, затем закройте все соединения db, это среднее изменение режима базы данных, которое является , режимом RESTRICTED_USER
от donig, поэтому моя база данных будет работать в режиме ограниченного доступа, и после изменения режима базы данных я обновляю свой колонтитул, и после этого я восстанавливаю db в многопользовательском режиме.Оператор ALTER DATABASE не допускается в транзакции с несколькими операциями
Но когда я запускаю его, me следующая ошибка
Msg 6401, Level 16, Состояние 1, Процедура SP_CollegeMigration, Строка 234
Не удается откат CollegeMigration. Не найдено ни одной транзакции или точки сохранения этого имени.Msg 226, уровень 16, состояние 6, процедура SP_CollegeMigration, строка 236
Оператор ALTER DATABASE не допускается в рамках транзакции с несколькими операциями.Msg 50000, уровень 16, состояние 6, процедура SP_CollegeMigration, строка 260
Оператор ALTER DATABASE не допускается в рамках транзакции с несколькими операциями.
Это часть моего сценария
IF(@preMigrationStatus = 'InProcess' and @isForceFull = 'Yes')
BEGIN
/*if the previous migration is in process then inside if i am changing the
db mode to restricted_user mode
*/
SET IMPLICIT_TRANSACTIONS OFF
ALTER DATABASE AlAhsaan2014 SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE;
UPDATE TblCollegeMigrationHistory
SET MigrationStatus ='Failed',
Comments = Comments + 'Migration Failed at '+ Convert(nvarchar, getdate()) + ' ;'
WHERE HistoryID = @HistoryId;
ALTER DATABASE AlAhsaan2014 SET MULTI_USER WITH ROLLBACK IMMEDIATE;
SET IMPLICIT_TRANSACTIONS ON
/* select statement goes here */
END
[Плохие привычки пинать: использование JOIN в старом стиле] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-joins. aspx) - то, что старый стиль * разделенный запятыми список таблиц * style должен ** больше не использоваться **, и вместо этого рекомендуется использовать ** соответствующий ANSI JOIN ** синтаксис, введенный с ANSI - ** 92 * * Стандарт SQL (более ** 20 лет ** назад) –
Отделите свои номера выписок 'GO' – DavidG
, почему мой вопрос был проголосован? –