SCVMM 2022 Install failure – MSSQL database connectivity issue
Hello, I’m trying to install SCVMM 2022 on a brand new Windows Server 2019 system. The SQL database is SQL Server 2016 version 13.0.6435.1. The SQL server is already in use in production with numerous other databases, using the default instance MSSQLSERVER
No issues with prerequisites when I use the Wizard setup.exe, but things have failed so many times now I have switched to using the CLI install method.
I pre-create a new database on the SQL server, named VirtualManagerDB, per the instructions here. The account I want to use as a service account is called COMPANYCitrixRunAS – it is not a SQL admin account, but it does have dbo privileges just on this one Database. The instructions do not state that I need to give this service account any higher level permissions on the SQL server itself like sysadmin, etc.
Then I setup VMServer.ini to do a CLI install with the following parameters, following this guide:
[OPTIONS]
ProductKey=<redacted>
UserName=Citrix-VMM
CompanyName=Company
SqlInstanceName=MSSQLSERVER$
SqlMachineName=sql1.company.com
CreateNewSqlDatabase=0
SqlDatabaseName=VirtualManagerDB
SqlServerPort=1433
RemoteDatabaseImpersonation=1
CreateNewLibraryShare=1
LibrarySharePath=C:VMMLibrary
LibraryShareDescription=Citrix VMM Library Files
VmmServiceLocalAccount=0
TopContainerName=OU=VMM,OU=Distributed Key Management,OU=Service,DC=company,DC=com
Upgrade=0
Then, I use the following install script:
setup.exe /server /i /f C:temp2022VMServer.ini /sqldbadmindomain company /sqldbadminName CitrixRunAs /sqldbadminpassword redacted /vmmservicedomain company /vmmserviceusername CitrixRunAs /vmmserviceuserpassword redacted /iacceptsceula
and follow along in the log file located at “C:ProgramDatavmmlogsSetupWizard.log”
Things progress fine until right after the Windows Features get checked for.
02:42:02:ProcessInstalls: Install Item VMM management server was successful. We will launch the post process delegate.
02:42:18:Windows feature RSAT-Clustering-PowerShell already enabled, skipping
02:42:20:Windows feature WindowsStorageManagementService already enabled, skipping
02:42:22:Windows feature UpdateServices-API already enabled, skipping
02:42:24:Windows feature FabricShieldedTools already enabled, skipping
02:42:26:Windows feature RSAT-Storage-Replica already enabled, skipping
02:42:26:We are going to impersonate as companyCitrixRunAs.
02:42:26:Out of Impersonation
02:42:26:We are going to impersonate as companyCitrixRunAs.
02:42:26:Out of Impersonation
02:42:26:We are going to impersonate as companyCitrixRunAs.
02:43:33:Out of Impersonation
02:43:33:GetSqlLoginName: TThe login name for the vmm server service is [companyCitrixRunAs]
02:43:33:We are going to impersonate as companyCitrixRunAs.
02:43:33:Out of Impersonation
02:43:33:GetSqlLoginName: TThe login name for the vmm server service is [companyCitrixRunAs]
02:43:33:We are going to impersonate as companyCitrixRunAs.
02:43:34:Out of Impersonation
02:43:34:VMMPostinstallProcessor threw an exception: Threw Exception.Type: Microsoft.VirtualManager.Setup.Exceptions.DatabaseConfigurationException, Exception.Message: Setup could not configure the database VirtualManagerDB.
Ensure service MSSQL$ is started by running “services.msc”, find the service, and then verify that the service is started.
02:43:34:StackTrace: at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)
at Microsoft.VirtualManager.Setup.VirtualMachineManagerHelpers.GrantSetupUserDBAccess(Boolean install)
at Microsoft.VirtualManager.Setup.InstallItemCustomDelegates.PangaeaServerPostinstallProcessor()
02:43:34:InnerException.Type: Microsoft.VirtualManager.DB.CarmineSqlException, InnerException.Message: Unable to connect to the VMM database because of a general database failure.
Ensure that the SQL Server is running and configured correctly, then try the operation again.
02:43:34:InnerException.StackTrace: at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()
at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String loginName, SqlContext ctx)
at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String connStr, String loginName)
at Microsoft.VirtualManager.Setup.DBConfigurator.CreateCarmineLoginAndDBUser(String loginName, String userName)
at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)
02:43:34:InnerException.Type: System.Data.SqlClient.SqlException, InnerException.Message: User does not have permission to perform this action.
02:43:34:InnerException.StackTrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 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, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()
02:43:34:ProcessInstalls: Running the PostProcessDelegate returned false.
02:43:34:ProcessInstalls: Running the PostProcessDelegate for PangaeaServer failed…. This is a fatal item. Setting rollback.
02:43:34:ProcessInstalls: Rollback is set and we are not doing an uninstall so we will stop processing installs
02:43:34:****************************************************************
02:43:34:****Starting*RollBack*******************************************
02:43:34:****************************************************************
Then it begins the rollback process. Some other relevant looking lines here in the rollback:
02:44:04:vitalfailure = Installing, Uninstalling, MicrosoftInstaller, PostInstallItem
02:44:04:FailureReason = Microsoft.VirtualManager.Setup.Exceptions.DatabaseConfigurationException: Setup could not configure the database VirtualManagerDB.
Ensure service MSSQL$ is started by running “services.msc”, find the service, and then verify that the service is started. —> Microsoft.VirtualManager.DB.CarmineSqlException: Unable to connect to the VMM database because of a general database failure.
Ensure that the SQL Server is running and configured correctly, then try the operation again. —> System.Data.SqlClient.SqlException: User does not have permission to perform this action.
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 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, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()
— End of inner exception stack trace —
at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()
at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String loginName, SqlContext ctx)
at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String connStr, String loginName)
at Microsoft.VirtualManager.Setup.DBConfigurator.CreateCarmineLoginAndDBUser(String loginName, String userName)
at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)
— End of inner exception stack trace —
at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)
at Microsoft.VirtualManager.Setup.VirtualMachineManagerHelpers.GrantSetupUserDBAccess(Boolean install)
at Microsoft.VirtualManager.Setup.InstallItemCustomDelegates.PangaeaServerPostinstallProcessor()
*** Carmine error was: DatabaseConfigurationFailed (334)
*** VirtualManagerDB ** MSSQL$ **
[s#2751] ExecuteNonQuery(this: (SqlRetryCommand#[2706]) { cmd = (SqlCommand#e56c6b) System.Data.SqlClient.SqlCommand, errorTitle = (string) “errorTitle”, sqlContext = (SqlContext#[d]) { [rw] CreateSqlLoginconstructionIdentity = (WindowsIdentity#974e1f) System.Security.Principal.WindowsIdentity commandList: { n=1 { NQ:”DECLARE @user_Account AS NVARCHAR(MAX)
SELECT @user_Account = SUSER_SNAME(0x0105000000000005150000003F53277FF531D637A224EC6E62760000)
EXEC(‘create login [‘ + @user_Account + ‘] from windows’)”, @5/3/2024 2:43:34 PM } } , conn = (SqlConnection#151bf1b) { State: Open Database: master DataSource: sql1.ads.ssc.wisc.eduMSSQLSERVER$,1433 PacketSize: 8000 ServerVersion: 13.00.6435 StatisticsEnabled: False WorkstationId: VMM-2024 } }, behavior = Default, failFast = (bool) False }) in C:__w1ssrcproductcommonUtilsDbSqlRetryCommand.cs:line 331
[s#1b] InstallActionProcessor.DoPostInstallTask() in C:__w1ssrcproductsetupbootstrappermanagedSetupWizHelperClassesInstallActionProcessor.cs:line 380
[s#1] AccountHelper.IsGMSAUser(userName: (string) “CitrixRunAs”, domainLdapDN: (string) “DC=primo”) in C:__w1ssrcproductcommonUtilsAccountHelper.cs:line 1739
Full call stack from when the exception was thrown: at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
Why are the logs mentioning a MSSQL$ entry? That looks like a SQL instance but I very specifically told it to use the default MSSQLSERVER instance. That bit “Ensure service MSSQL$ is started by running “services.msc”, find the service, and then verify that the service is started. —> Microsoft.VirtualManager.DB.CarmineSqlException: Unable to connect to the VMM database because of a general database failure.” is what shows up in the GUI install attempts.
When I go to the SQL server and I look at the contents of VirtualManagerDB database – I can see that new tables were created by the installer. So the installer was able to reach into the correct instance, and the correct database and modify it. But apparently it was not able to modify it enough to be satisfied.
On the SQL server, when I look in services.msc I can see that “SQL Server (MSSQLSERVER)” is a service that is running. Obviously. It’s what’s running my dozen other databases on this server. But there is no “MSSQL” service and I don’t understand why VMM thinks there should be because I explicitly told it to to use MSSQLSERVER!
What could the problem possibly be? I do not think I missed any setup steps.
Hello, I’m trying to install SCVMM 2022 on a brand new Windows Server 2019 system. The SQL database is SQL Server 2016 version 13.0.6435.1. The SQL server is already in use in production with numerous other databases, using the default instance MSSQLSERVER No issues with prerequisites when I use the Wizard setup.exe, but things have failed so many times now I have switched to using the CLI install method. I pre-create a new database on the SQL server, named VirtualManagerDB, per the instructions here. The account I want to use as a service account is called COMPANYCitrixRunAS – it is not a SQL admin account, but it does have dbo privileges just on this one Database. The instructions do not state that I need to give this service account any higher level permissions on the SQL server itself like sysadmin, etc. Then I setup VMServer.ini to do a CLI install with the following parameters, following this guide:[OPTIONS]ProductKey=<redacted>UserName=Citrix-VMMCompanyName=CompanySqlInstanceName=MSSQLSERVER$SqlMachineName=sql1.company.comCreateNewSqlDatabase=0SqlDatabaseName=VirtualManagerDBSqlServerPort=1433RemoteDatabaseImpersonation=1CreateNewLibraryShare=1LibrarySharePath=C:VMMLibraryLibraryShareDescription=Citrix VMM Library FilesVmmServiceLocalAccount=0TopContainerName=OU=VMM,OU=Distributed Key Management,OU=Service,DC=company,DC=comUpgrade=0 Then, I use the following install script:setup.exe /server /i /f C:temp2022VMServer.ini /sqldbadmindomain company /sqldbadminName CitrixRunAs /sqldbadminpassword redacted /vmmservicedomain company /vmmserviceusername CitrixRunAs /vmmserviceuserpassword redacted /iacceptsceulaand follow along in the log file located at “C:ProgramDatavmmlogsSetupWizard.log” Things progress fine until right after the Windows Features get checked for.02:42:02:ProcessInstalls: Install Item VMM management server was successful. We will launch the post process delegate.02:42:18:Windows feature RSAT-Clustering-PowerShell already enabled, skipping02:42:20:Windows feature WindowsStorageManagementService already enabled, skipping02:42:22:Windows feature UpdateServices-API already enabled, skipping02:42:24:Windows feature FabricShieldedTools already enabled, skipping02:42:26:Windows feature RSAT-Storage-Replica already enabled, skipping02:42:26:We are going to impersonate as companyCitrixRunAs.02:42:26:Out of Impersonation02:42:26:We are going to impersonate as companyCitrixRunAs.02:42:26:Out of Impersonation02:42:26:We are going to impersonate as companyCitrixRunAs.02:43:33:Out of Impersonation02:43:33:GetSqlLoginName: TThe login name for the vmm server service is [companyCitrixRunAs]02:43:33:We are going to impersonate as companyCitrixRunAs.02:43:33:Out of Impersonation02:43:33:GetSqlLoginName: TThe login name for the vmm server service is [companyCitrixRunAs]02:43:33:We are going to impersonate as companyCitrixRunAs.02:43:34:Out of Impersonation02:43:34:VMMPostinstallProcessor threw an exception: Threw Exception.Type: Microsoft.VirtualManager.Setup.Exceptions.DatabaseConfigurationException, Exception.Message: Setup could not configure the database VirtualManagerDB.Ensure service MSSQL$ is started by running “services.msc”, find the service, and then verify that the service is started.02:43:34:StackTrace: at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)at Microsoft.VirtualManager.Setup.VirtualMachineManagerHelpers.GrantSetupUserDBAccess(Boolean install)at Microsoft.VirtualManager.Setup.InstallItemCustomDelegates.PangaeaServerPostinstallProcessor()02:43:34:InnerException.Type: Microsoft.VirtualManager.DB.CarmineSqlException, InnerException.Message: Unable to connect to the VMM database because of a general database failure.Ensure that the SQL Server is running and configured correctly, then try the operation again.02:43:34:InnerException.StackTrace: at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String loginName, SqlContext ctx)at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String connStr, String loginName)at Microsoft.VirtualManager.Setup.DBConfigurator.CreateCarmineLoginAndDBUser(String loginName, String userName)at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)02:43:34:InnerException.Type: System.Data.SqlClient.SqlException, InnerException.Message: User does not have permission to perform this action.02:43:34:InnerException.StackTrace: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 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, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()02:43:34:ProcessInstalls: Running the PostProcessDelegate returned false.02:43:34:ProcessInstalls: Running the PostProcessDelegate for PangaeaServer failed…. This is a fatal item. Setting rollback.02:43:34:ProcessInstalls: Rollback is set and we are not doing an uninstall so we will stop processing installs02:43:34:****************************************************************02:43:34:****Starting*RollBack*******************************************02:43:34:**************************************************************** Then it begins the rollback process. Some other relevant looking lines here in the rollback:02:44:04:vitalfailure = Installing, Uninstalling, MicrosoftInstaller, PostInstallItem02:44:04:FailureReason = Microsoft.VirtualManager.Setup.Exceptions.DatabaseConfigurationException: Setup could not configure the database VirtualManagerDB.Ensure service MSSQL$ is started by running “services.msc”, find the service, and then verify that the service is started. —> Microsoft.VirtualManager.DB.CarmineSqlException: Unable to connect to the VMM database because of a general database failure.Ensure that the SQL Server is running and configured correctly, then try the operation again. —> System.Data.SqlClient.SqlException: User does not have permission to perform this action.at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 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, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()— End of inner exception stack trace —at Microsoft.VirtualManager.DB.SqlRetryCommand.ExecuteNonQuery()at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String loginName, SqlContext ctx)at Microsoft.VirtualManager.Setup.SetupDatabaseHelper.CreateSqlLogin(String connStr, String loginName)at Microsoft.VirtualManager.Setup.DBConfigurator.CreateCarmineLoginAndDBUser(String loginName, String userName)at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)— End of inner exception stack trace —at Microsoft.VirtualManager.Setup.DBConfigurator.GrantSetupUserDBAccess(Boolean install)at Microsoft.VirtualManager.Setup.VirtualMachineManagerHelpers.GrantSetupUserDBAccess(Boolean install)at Microsoft.VirtualManager.Setup.InstallItemCustomDelegates.PangaeaServerPostinstallProcessor()*** Carmine error was: DatabaseConfigurationFailed (334)*** VirtualManagerDB ** MSSQL$ ** [s#2751] ExecuteNonQuery(this: (SqlRetryCommand#[2706]) { cmd = (SqlCommand#e56c6b) System.Data.SqlClient.SqlCommand, errorTitle = (string) “errorTitle”, sqlContext = (SqlContext#[d]) { [rw] CreateSqlLoginconstructionIdentity = (WindowsIdentity#974e1f) System.Security.Principal.WindowsIdentity commandList: { n=1 { NQ:”DECLARE @user_Account AS NVARCHAR(MAX)SELECT @user_Account = SUSER_SNAME(0x0105000000000005150000003F53277FF531D637A224EC6E62760000)EXEC(‘create login [‘ + @user_Account + ‘] from windows’)”, @5/3/2024 2:43:34 PM } } , conn = (SqlConnection#151bf1b) { State: Open Database: master DataSource: sql1.ads.ssc.wisc.eduMSSQLSERVER$,1433 PacketSize: 8000 ServerVersion: 13.00.6435 StatisticsEnabled: False WorkstationId: VMM-2024 } }, behavior = Default, failFast = (bool) False }) in C:__w1ssrcproductcommonUtilsDbSqlRetryCommand.cs:line 331[s#1b] InstallActionProcessor.DoPostInstallTask() in C:__w1ssrcproductsetupbootstrappermanagedSetupWizHelperClassesInstallActionProcessor.cs:line 380[s#1] AccountHelper.IsGMSAUser(userName: (string) “CitrixRunAs”, domainLdapDN: (string) “DC=primo”) in C:__w1ssrcproductcommonUtilsAccountHelper.cs:line 1739Full call stack from when the exception was thrown: at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) Why are the logs mentioning a MSSQL$ entry? That looks like a SQL instance but I very specifically told it to use the default MSSQLSERVER instance. That bit “Ensure service MSSQL$ is started by running “services.msc”, find the service, and then verify that the service is started. —> Microsoft.VirtualManager.DB.CarmineSqlException: Unable to connect to the VMM database because of a general database failure.” is what shows up in the GUI install attempts. When I go to the SQL server and I look at the contents of VirtualManagerDB database – I can see that new tables were created by the installer. So the installer was able to reach into the correct instance, and the correct database and modify it. But apparently it was not able to modify it enough to be satisfied. On the SQL server, when I look in services.msc I can see that “SQL Server (MSSQLSERVER)” is a service that is running. Obviously. It’s what’s running my dozen other databases on this server. But there is no “MSSQL” service and I don’t understand why VMM thinks there should be because I explicitly told it to to use MSSQLSERVER! What could the problem possibly be? I do not think I missed any setup steps. Read More