ssdt dacpac: как запретить dacpac генерировать ошибку при удалении столбцов в таблице с данными

Я удаляю столбец в таблице xxx с данными. DACPAC выполняет проверку следующим образом.

IF EXISTS (select top 1 1 from [dbo].[xxx])
    RAISERROR (N'Rows were detected. The schema update is terminating because data loss might occur.', 16, 127) WITH NOWAIT

Вся миграция данных была выполнена в сценарии перед развертыванием. В настоящее время я прокомментировал это вручную.

Как сделать, чтобы он не генерировался автоматически?


person beewest    schedule 13.09.2016    source источник
comment
что именно нужно не понятно..   -  person sandeep rawat    schedule 13.09.2016
comment
я бы хотел, чтобы dacpac удалил столбец, не проверяя, существуют ли данные в этой таблице или нет.   -  person beewest    schedule 13.09.2016


Ответы (3)


Снимите флажок Block incremental deployment if data loss might occurred в VS\Publish\Advanced\General.

введите здесь описание изображения

person beewest    schedule 13.09.2016

для тех, кто использует sqlpackage для развертывания dacpac или использует Azure devops, установите следующие дополнительные аргументы, и это должно работать.

/p:BlockOnPossibleDataLoss=False
person Jabez    schedule 13.05.2020

это, скорее всего, связано с зависимостью, такой как триггер.

Если вы не уверены, какой объект вызывает это, вы можете использовать следующий сценарий для определения

select * from sys.objects
where Object_id = (OBJECT_ID('<name of object blocking'))
person Ken Burk    schedule 08.10.2020