Ich versuche, sqlpackage.exe
von einem Skript auszuführen, das von AWS CodeDeploy ausgeführt wird.Das Ausführen von sqlpackage.exe von AWS CodeDeploy löst eine Ausnahme aus
Der Befehl sqlpackage
kann von einer lokalen CMD-Eingabeaufforderung ausgeführt werden, wenn er als Administrator angemeldet ist, aber nicht ausgeführt wird, wenn er als Teil der CodeDeploy-Pipeline aufgerufen wird.
Der folgende Fehler tritt auf:
An unexpected failure occurred: DacInstance with the specified instance_id does not exist..
Unhandled Exception: System.Data.SqlClient.SqlException: DacInstance with the specified instance_id does not exist.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
Es scheint, dass eine Verbindung nicht in der Datenbank vorgenommen werden.
CodeDeploy wird als Windows-Dienst unter einem Local System
-Konto ausgeführt, wo meine Eingabeaufforderung, wo dies funktioniert, unter dem Administrator
Konto ausgeführt wird. Dies ist der einzige Unterschied, also denke ich, dass dies ein Berechtigungsproblem sein muss.
Es scheint, dass ein dacpac von einem Benutzer mit sysadmin
Berechtigungen installiert werden muss. Ich habe (als Test) versucht, dem SQL Server-Benutzer NT AUTHORITY\SYSTEM
die Rolle DBCreator
zuzuweisen.
Die Bereitstellung ist mit dem folgenden Fehler fehlgeschlagen.
The database settings cannot be modified. You must be a SysAdmin to apply these settings.
The database settings cannot be modified. You must be a SysAdmin to apply these settings.
An error occurred while the batch was being executed.
Updating database (Failed)
Ich bin mir nicht sicher, wie man jedoch vorgeht. Ich schätze, dass NT AUTHORITY\SYSTEM
eine SysAdmin
ist eine schlechte Idee!