Как я узнаю, что какая-либо конкретная команда не удалась при развертывании/публикации данных в базе данных?

Я создал проект базы данных в Visual Studio 2013. Сборка проекта выполнена успешно. В этом проекте я вставил некоторые тестовые данные после развертывания. Если какие-либо данные не удалось вставить, то как узнать, что один из скриптов не работает в определенном месте.

На самом деле я хочу отменить все это, если какая-либо команда не удалась из самого файла сценария. Поскольку SQL Server 2012 не поддерживает откат из сценария до/после развертывания.


person Ravindra Sinare    schedule 19.08.2015    source источник


Ответы (1)


Окно результатов покажет вам строку и подробности любой ошибки, это немного раздражает, так как иногда показывает текст начала скрипта, но номер строки ошибки будет правильным.

Общие вещи, которые вы должны сделать, это убедиться, что ваши сценарии вставки могут быть повторно запущены, а затем, если вы действительно не видите ошибки, вы можете запустить сценарий самостоятельно для его отладки.

Я бы очень рекомендовал использовать операторы MERGE для вставки :)

Я также обычно рекомендую использовать sqlpackage.exe для отправки в локальные экземпляры Deb, а не для публикации vs, см.:

https://the.agilesql.club/blog/Ed-Elliott/Visual-Studio-SSDT-Publish-My-Personal-Best-Practices

Ed

person Ed Elliott    schedule 19.08.2015
comment
Да, Эд, ты говоришь правильно. Но 1) мне нужно сделать откат, если какой-либо оператор не работает. 2) Также я развертываю свои данные с помощью dacpac. Есть ли способ узнать то же самое. Поскольку SQL-сервер не позволяет мне откатиться до сценария после развертывания, поэтому мне приходится делать это вручную. - person Ravindra Sinare; 19.08.2015
comment
Вы можете добавить свои собственные транзакции/откат к сценарию после развертывания (он не отменит изменения схемы), НО поскольку это экземпляр dev, я всегда просто исправлял проблему и повторно развертывал и убедитесь, что я включил процесс, чтобы он снова не сломался таким образом :) - person Ed Elliott; 19.08.2015