Почему Sql Server Data Tools не понимают операторы Drop при импорте сценариев?

В настоящее время я загружаю новый sqlproj с пользовательскими сценариями, которые были сгенерированы с помощью RedGate SqlCompare в ходе проекта, когда мы принимаем SSDT. Однако я нахожу, довольно досадно, что SSDT плюет довольно много материала в файл ScriptsIgnoredOnImport.

Кажется, есть некоторые обходные пути, чтобы помочь SSDT в его работе. Например, удаление стандартных шаблонов транзакций, которые вставляет RedGate, похоже, помогает разобраться в сценарии. В случае сохраненных процедур, кажется, что изменение всех команд ALTER PROCEDURE на CREATE PROCEDURE заставляет SSDT извлечь старый файл и перезаписать его новым, что я и хочу.

Однако, для всего, что связано с оператором DROP (таблицы, процедуры; что угодно), я не могу на всю жизнь заставить его просто удалить файл. И когда дело доходит до очистки ~1000 объектов, я не могу рассмотреть ничего, что требует ручного труда.

Поэтому на данный момент я прибег к разрыву файла ScriptsIgnoredOnImport с powershell и вызовом tf delete на каждой строке, которая соответствует ПРОЦЕДУРЕ КАПЛИ, но это действительно плохое (не говоря уже о мучительно медленном) решение.

Я бы очень хотел узнать, как заставить SSDT удалять вещи. Разве он просто не поддерживает удаление объектов через импорт скриптов?

1 ответ

Решение

Вы пытались сделать сравнение схемы SQL из вашей базы данных с проектом? Это должно позволить вам легко сбрасывать кучу объектов. (К сожалению, удаление объектов с помощью импорта не работает. Также не работают операторы ALTER.) Если это одноразовая задача, я бы, вероятно, построил локальную базу данных, запустил на ней скрипт Red-Gate, а затем сравнил ее с Проект SQL для создания / обновления / удаления объектов. Если это будет продолжаться, то для этого потребуется другое решение, но это, по крайней мере, поможет вам начать работу.

Другие вопросы по тегам