VSTS: развертывание управления выпуском Azure SQL DACPAC с ошибкой

Я пытаюсь настроить управление выпуском VSTS для своей базы данных SQL Azure. Я использую задачу «Развернуть Azure SQL DACPAC». Путь к файлу dacpac настроен как

$(System.DefaultWorkingDirectory)\**\*.dacpac

Хотя база данных обновляется правильно, я получаю сообщение об ошибке, которое приводит к сбою задачи.

"System.Management.Automation.ParentContainsErrorRecordException: *** Could not deploy package"

Похоже, что все обновления применены к базе данных, но задача по-прежнему выдает ошибку. Войти ниже

2016-07-07T07:50:44.6118522Z Publishing to database 'mydb' on server 'myserver.database.windows.net'.
2016-07-07T07:50:45.7587428Z Initializing deployment (Start)
2016-07-07T07:50:52.5825349Z Initializing deployment (Complete)
2016-07-07T07:50:52.5835341Z Analyzing deployment plan (Start)
2016-07-07T07:50:52.7085342Z Analyzing deployment plan (Complete)
2016-07-07T07:50:52.7085342Z Updating database (Start)
2016-07-07T07:50:53.7000358Z Altering [dbo].[usp_Products_List]...
2016-07-07T07:50:53.7170379Z Creating [dbo].[usp_Products_GetById]...
2016-07-07T07:50:53.8745919Z An error occurred while the batch was being executed.
2016-07-07T07:50:53.8855912Z Updating database (Failed)
2016-07-07T07:50:53.9105905Z ##[debug]System.Management.Automation.RemoteException: *** Could not deploy package.
2016-07-07T07:50:53.9225921Z ##[debug][Azure RDFE Call] Deleting firewall rule 260745ad-327c-45ae-bcb8-5c6bb0e43797 on azure database server: myserver
2016-07-07T07:50:55.9753040Z ##[debug][Azure RDFE Call] Firewall rule 260745ad-327c-45ae-bcb8-5c6bb0e43797 deleted on azure database server: myserver
2016-07-07T07:50:55.9934761Z ##[error]System.Management.Automation.ParentContainsErrorRecordException: *** Could not deploy package.

Сохраненный код процедуры

CREATE PROCEDURE [dbo].[usp_Products_GetById]
    @pId int
AS
    SET NOCOUNT ON;

SELECT [id]
      ,[description]
      ,[created_dt]
      ,[last_mod_dt]
      ,[active]
  FROM [dbo].[Products]
  WHERE [id] = @pId
GO



Ответы (3)


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

Итак, убедитесь, что все ваши сценарии выполняются без ошибок (с помощью SQL Management Studio или Visual Studio), если другие решения не работают.

Жаль, что ошибка в VSTS не фиксирует ошибку SQL ...

person dario_ramos    schedule 27.07.2016
comment
Изменил это на принятый ответ. Как я уже сказал в своем ответе, я сначала использовал полное доменное имя. Но, вероятно, именно из-за ошибки скрипта в первом случае возникли ошибки. - person BeesNees; 06.08.2016

Обычно это вызвано тем, что «Целевая платформа» вашего проекта SQL не соответствует версии SQL Server, которую вы развертываете. Убедитесь, что «Целевая платформа» вашего проекта SQL соответствует версии базы данных Azure SQL: введите описание изображения здесь

person Eddie Chen - MSFT    schedule 07.07.2016
comment
Версия установлена ​​правильно как в проекте SQL, так и в Azure SQL. - person BeesNees; 07.07.2016
comment
@BipinDas Можете ли вы добавить переменную с именем system.debug в определение выпуска и установить значение true, а затем запустить выпуск и поделиться журналами? - person Eddie Chen - MSFT; 07.07.2016
comment
@BipinDas Вы тестировали свой SQL-проект на своем локальном компьютере? Ошибка, похоже, в проекте, который создает таблицу. - person Eddie Chen - MSFT; 07.07.2016
comment
В проекте нет ошибок. Я могу обновить свою локальную базу данных, используя сравнение схем. - person BeesNees; 07.07.2016
comment
@BipinDas Не могли бы вы поделиться кодом, создающим [dbo]. [Usp_Products_GetById], чтобы я мог попробовать его на своей стороне? - person Eddie Chen - MSFT; 07.07.2016

Я попытался вручную установить правило брандмауэра и использовать только имя сервера, а не полное доменное имя. Затем я снова попробовал FQDN, и это сработало. Так что не уверен, почему это не удалось.

person BeesNees    schedule 26.07.2016