Ошибка «Оператор DELETE конфликтует с ограничением REFERENCE» во время развертывания базы данных с помощью DevOps Azure - PullRequest
1 голос
/ 19 сентября 2019

Я пытаюсь развернуть несколько изменений базы данных с помощью задания развертывания базы данных в DevOps Azure.Это после того, как конвейер успешно создал сборку.Задание развертывания базы данных состоит из следующих задач:

  1. Инициализация задания
  2. Загрузка артефакта
  3. Удаление публикаций
  4. Развертывание базы данных SQL
  5. Восстановить копии публикаций
  6. Завершить работу

Задачи 1-3 успешно завершены, но задача № 4 прерывается со следующими ошибками:

==============================================================================
Task         : SQL Server database deploy
Description  : Deploy a SQL Server database using DACPAC or SQL scripts
Version      : 0.3.20
Author       : Microsoft Corporation
Help         : [Learn more about this task](https://aka.ms/sqldacpacmachinegroupreadme)
==============================================================================
** Could not deploy package.
Warning SQL72012: The object [DB name] exists in the target, but it will not be dropped even though you selected the 'Generate drop statements for objects that are in the target database but that are not in the source' check box.
Warning SQL72012: The object [DB name_log] exists in the target, but it will not be dropped even though you selected the 'Generate drop statements for objects that are in the target database but that are not in the source' check box.
Warning SQL72015: The table [Table A] is being dropped, data loss could occur.
Warning SQL72015: The table [Table B] is being dropped, data loss could occur.
Error SQL72014: .Net SqlClient Data Provider: Msg 547, Level 16, State 0, Line 50 The DELETE statement conflicted with the REFERENCE constraint "[Foreign Key Name]". The conflict occurred in database "DB name", table "Table C", column 'Column name'.
Error SQL72045: Script execution error.  The executed script:
USE [DB name]
[SQL script]
...
...
##[error]Publishing to database 'DB name' on server 'Server name'.

Мой вопросявляется ли задача развертывания базы данных SQL Server отключить внешние ключи, когда она начинает развертывание?Похоже, что он пытается удалить данные из таблицы «Таблица C», но от этого зависит другая таблица (назовем ее «Таблица D»), что имеет смысл, но я думаю, что задача развертывания базы данных отключит все внешние ключи, когдаон начинает сбрасывать таблицы и развертывать изменения.

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Вы, вероятно, используете задачу SQL Server database deploy, правильно?Развертывание базы данных использует инструмент sqlpackage.exe и в этом случае выполняет действие Publish.В ссылке вы можете увидеть все различные параметры, которые можно использовать.

В вашем случае, я подозреваю, вам нужно добавить /p:IgnoreWithNocheckOnForeignKeys=True в раздел Additional Arguments задачи:

enter image description here

0 голосов
/ 20 сентября 2019

Вчера, немного поработав, я обнаружил, что проблема в чем-то совершенно ином.У меня есть сценарий PostDeployment в моем проекте базы данных, и в нем был сценарий, который делал DELETE.Это была проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...