DbUp throws "Grantor does not have GRANT permission."
Exception thrown when upgrading any db (even common) to almond (8.1.2 is fine) when using MSSQL as service
dotnet DotStat.DbUp.dll upgrade --connectionString "Server=(MSSQL_HOST);Database=(COMMON_DATABASE);User=(SA_USER);Password=(SA_PASSWORD);" --commonDb --loginName $(COMMON_USER) --loginPwd $(COMMON_PASSWORD) --force
ClientConnectionId:bd2d489c-1160-4a67-ac5c-6da62c49973f Error Number:4613,State:1,Class:16 System.Data.SqlClient.SqlException (0x80131904): Grantor does not have GRANT permission. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action
1 wrapCloseInAction)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at DbUp.Support.ScriptExecutor.ExecuteNonQuery(IDbCommand command)
at DbUp.Support.ScriptExecutor.<>c__DisplayClass18_2.b__1()
at DbUp.SqlServer.SqlScriptExecutor.ExecuteCommandsWithinExceptionHandler(Int32 index, SqlScript script, Action executeCommand)
at DbUp.Support.ScriptExecutor.<>c__DisplayClass18_0.b__0(Func1 dbCommandFactory) at DotStat.DbUp.DotstatTransactionStrategy.Execute(Action
1 action, Boolean noTransaction) in /app/DotStat.DbUp/DotstatConnectionManager.cs:line 134
at DotStat.DbUp.DotstatConnectionManager.ExecuteCommandsWithManagedConnection(Action1 action) in /app/DotStat.DbUp/DotstatConnectionManager.cs:line 71 at DbUp.Support.ScriptExecutor.Execute(SqlScript script, IDictionary
2 variables)
at DbUp.Engine.UpgradeEngine.PerformUpgrade()`
Possible issue with https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-core-data-access/-/blob/develop/DotStat.DbUp.MsSql/MasterDb/0160.GrantLoginViewServerState.sql
Actions agreed
-
Change DbUp so that granting recently introduced special permissions is not failing the upgrade (for cloud-managed SQL services) -
Split query statement for "running_connections" from statements for DB version and DB sizes and allow it to fail (so that the DB version and DB sizes can still always be retrieved, even if the transfer has no access to get "running_connections" -
Update the statement for DB sizes to get sums per type (see comment below)