Ошибка при публикации в Azure

Я пытаюсь опубликовать некоторые изменения в службе приложений Azure, включая миграцию базы данных, но у меня возникает следующая ошибка: есть ли какие-либо сведения о том, о чем идет речь. P.S Пользователю базы данных не назначена роль сервера sysadmin.

1>Warning SQL0: A project which specifies SQL Server 2016 as the target 
platform may experience compatibility issues with Microsoft Azure SQL 
Database v12.
1>Warning SQL0: Your permissions to see all objects in the server or 
database could not be verified.  The original error was:
1>The SELECT permission has not been granted on 'sys.sql_logins' for the 
'master' database. You must be a member of the 'loginmanager' role to access 
this system view. 
1>Reverse Engineer will continue the import process, and logins will not be 
imported.
1>The reverse engineering operation will attempt to continue anyway, but the 
resulting model might be incomplete, malformed, or incorrect.
1>Error SQL72014: .Net SqlClient Data Provider: Msg 5011, Level 14, State 2, 
Line 5 User does not have permission to alter database 'Iklikl_Staging', the 
database does not exist, or the database is not in a state that allows 
access checks.
1>Error SQL72045: Script execution error.  The executed script:
1>IF EXISTS (SELECT 1
1>           FROM   [sys].[databases]
1>           WHERE  [name] = N'$(DatabaseName)')
1>    BEGIN
1>        ALTER DATABASE [$(DatabaseName)]
1>            SET TEMPORAL_HISTORY_RETENTION ON 
1>            WITH ROLLBACK IMMEDIATE;
1>    END
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
0
1 256
2

Ответы 2

Вам необходимо настроить таргетинг на SQL Azure.

Из этой статьи:

Чтобы изменить целевую платформу проекта

Щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите «Свойства». Щелкните вкладку Project Settings слева, чтобы перейти на страницу свойств Project Settings.

Раскрывающийся список Целевая платформа на этой странице содержит все поддерживаемые платформы SQL Server, на которых может быть опубликован проект базы данных. Для этой процедуры выберите SQL Azure.

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

Mehroz Irshad 11.05.2018 12:44

Эти ошибки не имеют ничего общего с вашим приложением MVC. Все они связаны с базой данных. Если вы разработали локальный SQL и хотите развернуть его в Azure SQL, они очень похожи, но не одно и то же. Процесс миграции Azure SQL на локальный SQL задокументирован здесь docs.microsoft.com/en-us/azure/sql-database/…

Murray Foxcroft 11.05.2018 12:51

Я использую первый подход с кодом с Entity, и ошибка возникает при попытке выполнить скрипт в OP, я могу создавать, изменять и удалять с помощью Sql Server Management Studio удаленно, но когда я пытаюсь опубликовать его через Visual Studio, он ломает броски вышеупомянутые ошибки. Теперь я смущен, связано ли это с разрешениями базы данных или чем-то еще.

Mehroz Irshad 14.05.2018 12:04

Пользователь SQL, которого вы используете для развертывания, не является частью роли loginmanager. loginmanager и dbmanager - две роли, эксклюзивные для Azure SQL.

Выполните следующее для владелец (где [user] - ваш пользователь sql):

ALTER ROLE loginmanager ADD MEMBER [user]; 

Вы можете проверить, что ваш пользователь теперь является частью правильной роли, выполнив следующий запрос:

select dp.name as db_role, dp2.name as db_user
from sys.database_role_members drm
join sys.database_principals dp on (drm.role_principal_id = dp.principal_id)
join sys.database_principals dp2 on (drm.member_principal_id = dp2.principal_id)
order by dp.name

Пользователю также могут потребоваться другие разрешения, такие как «Изменить», «Выбрать» и «Просмотр определения», которые вы можете добавить, выполнив следующий пример команды для твой БД (где [user] - ваш пользователь sql:

GRANT ALTER TO [user]

Вот статьи, которые я использовал (обязательно прочтите первую, последние две дополняют информацию в ней):

https://www.sqlservercentral.com/articles/azure-dwh-part-12-permissions-roles-logins-and-users

https://docs.microsoft.com/en-us/sql/relational-databases/security/authentication-access/database-level-roles?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/t-sql/statements/grant-schema-permissions-transact-sql?view=sql-server-ver15

Другие вопросы по теме