首页 > 解决方案 > 使用 yaml Azure DevOps Pipeline 构建错误

问题描述

我试图自动化我的管道,因此通过 yaml 手动配置了 azure 管道。除最后一项外,所有任务均已成功执行。

最后一个任务是在数据库'demodb'中执行sql迁移脚本

- task: SqlAzureDacpacDeployment@1
      inputs:
        azureSubscription: 'sqlserviceConnection' 
        AuthenticationType: 'servicePrincipal'
        ServerName: 'demodb.database.windows.net'
        DatabaseName: 'demodb'
        deployType: 'SqlTask'
     SqlFile:'$(Build.ArtifactStagingDirectory)\publish\SQL\migrate.sql'
        IpDetectionMethod: AutoDetect

那就是我变成的错误:

指定的模式名称“xxx@xxx”要么不存在,要么您没有使用它的权限。

任务亮点:

migrate.sql 的内容

IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL
BEGIN
    CREATE TABLE [__EFMigrationsHistory] (
        [MigrationId] nvarchar(150) NOT NULL,
        [ProductVersion] nvarchar(32) NOT NULL,
        CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId])
    );
END;
GO

BEGIN TRANSACTION;
GO

IF NOT EXISTS(SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20210714144330_init')
BEGIN
    CREATE TABLE [Users] (
        [Id] uniqueidentifier NOT NULL,
        [BusinessPhones] nvarchar(max) NULL,
        [DisplayName] nvarchar(max) NULL,
        [GivenName] nvarchar(max) NULL,
        [JobTitle] nvarchar(max) NULL,
        [Mail] nvarchar(max) NULL,
        [MobilePhone] nvarchar(max) NULL,
        [OfficeLocation] nvarchar(max) NULL,
        [PreferredLanguage] nvarchar(max) NULL,
        [Surname] nvarchar(max) NULL,
        [UserPrincipalName] nvarchar(max) NULL,
        CONSTRAINT [PK_Users] PRIMARY KEY ([Id])
    );
END;
GO

IF NOT EXISTS(SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20210714144330_init')
BEGIN
    INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
    VALUES (N'20210714144330_init', N'5.0.8');
END;
GO

COMMIT;
GO

我做了什么:

标签: azure-devopsazure-active-directoryazure-web-app-serviceazure-sql-database

解决方案


我通过在目标数据库中创建模式解决了这个问题。我还授予 aad 用户访问该架构的权限

CREATE SCHEMA MCMO 
AUTHORIZATION MCMO_Contributor

推荐阅读