#azure-devops #azure-active-directory #azure-web-app-service #azure-sql-database
Вопрос:
я попытался автоматизировать свой конвейер, поэтому настроил конвейер azure вручную через yaml. все задачи были успешно выполнены, кроме последней.
последняя задача-выполнить сценарий миграции sql в базе данных «demodb»
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: 'sqlserviceConnection'
AuthenticationType: 'servicePrincipal'
ServerName: 'demodb.database.windows.net'
DatabaseName: 'demodb'
deployType: 'SqlTask'
SqlFile:'$(Build.ArtifactStagingDirectory)publishSQLmigrate.sql'
IpDetectionMethod: AutoDetect
вот в чем ошибка, которой я становлюсь:
Указанное имя схемы «xxx@xxx» либо не существует, либо у вас нет разрешения на его использование.
основные моменты задачи:
- sqlserviceConnection : подключение к службе
- Файл SqlFile : сценарий переноса базы данных будет выполнен, если конвейер успешно запустится.
содержимое файла 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
что я сделал:
- созданный sql server
- создал пользователя aad
- назначенный пользователь aad в качестве adb_admin в базе данных ‘demodb’
- создан сервис приложений «demoapp»
- зарегистрировал службу приложений в aad
- добавлено демо-приложение к aad
Ответ №1:
я решил проблему, создав схему в целевой базе данных. также я предоставил пользователю aad разрешение на доступ к этой схеме
CREATE SCHEMA MCMO
AUTHORIZATION MCMO_Contributor