A note to everyone, do not use the SQL queries listed earlier. The UUIDs for the delete statement are unique to each installation, and you may end up causing interruptions in your backups if you run the query. If you already ran the query, simply go through the properties of your managed servers and click “finish”, it should reinstall any components the query accidentally removed.
The issue is that the Veeam Hardware VSS Provider is installed on desktop editions of windows, which is not supported by Windows Desktop version. Our requirement for this is listed in the user guide and this KB article.
These never should have been installed in the first place (it was not expected behavior in previous versions), and there is now a stale-entry in the Veeam Configuration Database where Veeam thinks the VSS Hardware Provider is installed even if you uninstall it.
If you have this issue and an active support contract, please open a Support case regarding the issue. Support can assist with removing the stale entry (do not use the previous query linked earlier, those UUIDs will be specific per each environment, so the query will not work as written)
If you do not have support contract, at your own risk, you can remove the Hardware VSS Provider safely with the following script:
Steps:
- Make a fresh Configuration Database Backup.
- Optional but good safety: Take a native backup of the database: https://www.veeam.com/kb1471
- Copy the script below to a text file, and save it as a .ps1 file, e.g., host-components-remover.ps1
- Ensure the script is being run from the Veeam Backup and Replication Server itself.
- Run the script from an Administrative Powershell session as Administrator with Backup Administrator Privileges in Veeam
- Select the host you’re getting the error on from the UI which pops up (remember, only Windows Desktop Edition is affected)
- Afterwards, you’ll be asked which components you want to remove, select the Hardware VSS Provider
- Let the script remove the hardware VSS provider component from the database.
- Close and open the console again, you should stop being bothered about it.
Script: Before running, do not skip step 0! You must make a backup of the Configuration Database prior to running this script
$answers = "Yes","No"
$Servers = Get-VBRServer
$badServer = $Servers | Select id, name, type | Out-GridView -Title "Select the host with incorrect Components and click 'Okay'" -PassThru
$realBadServer = $Servers | Where-Object {$_.id -eq $badServer.id}
$rbsComponents = $realBadServer.FindPhysicalHost().GetComponents()
$rbscToDelete = $rbsComponents| Select id, type, version | Out-GridView -Title "Select which components to remove and click 'Okay'" -PassThru
While($null -eq $rbscToDelete){
Write-Host "No component was selected. Please ensure you select a component from the list by clicking on it and ensuring it is highlighted. Please select a component to remove once more."
$qq = Read-Host -Prompt "Stop the script now? (Write 'Yes') or Try selecting Components again? (write 'No')"
While($qq -notin $answers){
$qq = Read-Host -Prompt "Answer 'Yes' or 'No'"
}
If($qq -eq "Yes"){Exit}
$rbscToDelete = $rbsComponents| Select id, type, version | Out-GridView -Title "Select which components to remove and click 'Okay'" -PassThru
}
Write-Host "About to remove component $($rbscToDelete.Type) from host $($realBadServer.name). Proceed?"
$Response = Read-Host -Prompt "Answer 'Yes' or 'No'"
While($Response -notin $answers){
$Response = Read-Host -Prompt "Answer 'Yes' or 'No'"
}
If($Response -eq "Yes"){
Write-Host "Removing component $($rbscToDelete.Type) from host $($realBadServer.name) and exiting"
($rbsComponents | Where-Object {$_.id -eq $rbscToDelete.id}).Delete()
} else {
Write-Host "Doing nothing, ending the script"
}