Используя msbuild с SSDT, я попробовал IncludeTransactionalScripts, но кажется, что он помещает только каждый оператор в отдельную транзакцию. Возможно ли опубликовать несколько проектов баз данных в качестве транзакции? Если нет, могу ли я хотя бы убедиться, что каждый проект будет опубликован в рамках транзакции?Публикация транзакций SSDT?
ответ
Для кого-то, кто нашел этот вопрос, но не знал, где искать:
Существует опубликовать настройки, «Включить транзакционные сценарии», который начинает транзакцию в начале публикации сценария. Затем он обертывает каждое изменение схемы в скрипте при проверке ошибок. При ошибках транзакция откатывается назад, а журнал ошибок увеличивается, но затем транзакция запускается с нуля. Если нет ошибок, транзакция продолжается неизрасходованного
BEGIN TRANSACTION
...alter object here
IF @@ERROR <> 0 @@TRANCOUNT > 0
BEGIN
ROLLBACK;
END
IF @@TRANCOUNT = 0
BEGIN
INSERT INTO #tmpErrors (Error)
VALUES (1);
BEGIN TRANSACTION;
END
В конце концов, если ошибки были зарегистрированы, вся транзакция откатывается:
IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT N'The transacted portion of the database update succeeded.'
COMMIT TRANSACTION
END
ELSE PRINT N'The transacted portion of the database update failed.'
GO
Примечание (как в комментарии выше), что это не включает ваши сценарии до и после развертывания, поэтому вы должны быть осторожны, чтобы обернуть их отдельно
Ссылка ниже в блоге Питера Шотт - это тот же самый парень, который заметил выше, я думаю, что - спасибо :)
http://schottsql.blogspot.co.uk/2012/11/ssdt-publishing-your-project.html
Он объясняет хорошо, как настроить эти параметры при использовании SSMS
Используя Visual Studio 2015, я обнаружил, что параметр «Включить транзакционные скрипты» не был установлен по умолчанию. Вы должны выбрать при определении параметров публикации ([Строить] >> [Опубликовать {имя проекта} ...]) в соответствии с [...] Дополнительно вкладки:
- 1. Публикация потока в Postgres, аналогичная SSDT
- 2. SSDT/VS2015 Развертывание базы данных - публикация игнорирует вложенные представления
- 3. Параметры SSDT
- 4. Непрерывная интеграция с ssdt
- 5. SSDT MongoDB SSIS
- 6. SqlPackage Quiet Output SSDT
- 7. SSDT и Entity Framework
- 8. Redshift with SSIS/SSDT
- 9. Ошибка Установка SSDT 2012
- 10. Ошибка сборки SSDT
- 11. SSDT не публикует сборку
- 12. SSDT Тайм-аут публикации
- 13. SSDT - CROSS ОТНОСИТЬСЯ OPENJSON
- 14. Публикация данных с помощью SSDT с новой функцией Создание участников и план развертывания
- 15. Публикация DacPacs в Visual Studio 2013
- 16. Публикация и публикация Faye канала
- 17. Публикация проектов без VS Публикация
- 18. SSDT OPENJSON Неправильное предупреждающее сообщение
- 19. Как получить адрес Shadow SSDT?
- 20. SSDT неразрешенная ссылка ОШИБКА SQL71561
- 21. SSDT найти компонент по id
- 22. Диспетчер пользовательских подключений SSDT BI
- 23. Единицы Тестирование таблиц с SSDT
- 24. SSDT Отключить переименование - журнал рефакторинга
- 25. SSDT для визуальной студии 2015
- 26. Как создать индексы с SSDT
- 27. SSDT создает сценарий развертывания отката?
- 28. SSDT Register Data Tier Application
- 29. SSDT для VS 2015 RC
- 30. Как использовать nuget с SSDT?
Я думаю, что это делает это прямо сейчас, если вы выберете этот вариант. Он проверяет после каждой операции ошибку и обнаруживает, что один из них вызывает ROLLBACK для всего, что сделано в части изменения схемы. (Разделы Pre и post deploy являются отдельными и вне этого.) –
Вы уверены? Глядя на скрипт, он генерирует несколько транзакций BEGIN и COMMIT, как и каждое изменение в своей собственной транзакции. Мне нужна одна большая сделка для партии. Конечно, это может быть непрактично, если есть много изменений, но иногда это может быть полезно. – SAS
Он определенно откатывает все в части изменения схемы, если есть ошибка. Я знаю это от мучительной попытки проталкивать только часть проекта БД, когда у меня были зависимости от еще не созданной базы данных/таблицы. Найдите в сценарии разделы «IF @@ ERROR <> 0», и вы не должны видеть несколько коммитов, просто откаты. –