Update:
Ā
This has been fixed with this script:
With this blogpost I want to make a ācatch-allā knowledge-article containing problems and fixes I learned in the field regarding SCOM DW synchronization issues. I will update this post regularly if I encounter any new phenomenon on this subject.
Possible Cause 1: The synchronization objects and settings are missing from the management group
Diagnosis
Run the following powershell-commands in the SCOM powershell interface of the affected management group:
get-SCOMClass -name:Microsoft.SystemCenter.DataWarehouseSynchronizationService|Get-ScomClassInstance
If no objects are returned it means that the workflows responsible for synchronizing data are not running.
Add-pssnapin microsoft.enterprisemanagement.operationsmanager.client
Set-location OperationsManagerMonitoring::
New-managementgroupconnection <SCOM management server>
get-DefaultSetting ManagementGroup\DataWarehouse\DataWarehouseDatabaseName $DataWarehouseDatabaseName
get-DefaultSetting ManagementGroup\DataWarehouse\DataWarehouseServerName $DataWarehouseSqlServerInstance
If the default settings are not set this indicates that the DW registration has been broken.
Causes
The breakage and disappearance of the DW synchronization objects and settings can happen when a SCOM 2007->2012 upgrade fails and you have to recover the RMS. The issue is hard to detect (especially if you do not use reporting much) as no errors are generated.
Solution
The settings and objects need to be regenerated manually using the script below. This will add all necessary objects to SCOM with the correct server and database references. The DW properties will also be added to the default-settings section.
You will have to edit the script and enter the Operations Manager Database server name, Data Warehouse servername and console path in the script . This is a PowerShell script which needs to copied to text and rename to .ps1 after entering the required information to run under PowerShell.
#Populate these fields with Operational Database and Data Warehouse Information
#Note: change these values appropriately
$OperationalDbSqlServerInstance = ā<OpsMgrDB server instance. If its default instance, only server name is required>ā
$OperationalDbDatabaseName = āOperationsManagerā
$DataWarehouseSqlServerInstance = ā<OpsMgrDW server instance. If its default instance, only server name is required>ā
$DataWarehouseDatabaseName = āOperationsManagerDWā
$ConsoleDirectory = ā<OpsMgr Console Location by default it will be C:\Program Files\System Center 2012\Operations Manager\Consoleā
$dataWarehouseClass = get-SCOMClass -name:Microsoft.SystemCenter.DataWarehouse
$seviewerClass = get-SCOMClass -name:Microsoft.SystemCenter.OpsMgrDB.AppMonitoring
$advisorClass = get-SCOMClass -name:Microsoft.SystemCenter.DataWarehouse.AppMonitoring
$dwInstance = $dataWarehouseClass | Get-SCOMClassInstance
$seviewerInstance = $seviewerClass | Get-SCOMClassInstance
$advisorInstance = $advisorClass | Get-SCOMClassInstance
#Update the singleton property values
$dwInstance.Item($dataWarehouseClass.Item(āMainDatabaseServerNameā)).Value = $DataWarehouseSqlServerInstance
$dwInstance.Item($dataWarehouseClass.Item(āMainDatabaseNameā)).Value = $DataWarehouseDatabaseName
$seviewerInstance.Item($seviewerClass.item(āMainDatabaseServerNameā)).Value = $OperationalDbSqlServerInstance
$seviewerInstance.Item($seviewerClass.item(āMainDatabaseNameā)).Value = $OperationalDbDatabaseName
$advisorInstance.Item($advisorClass.item(āMainDatabaseServerNameā)).Value = $DataWarehouseSqlServerInstance
$advisorInstance.Item($advisorClass.item(āMainDatabaseNameā)).Value = $DataWarehouseDatabaseName
$dataWarehouseSynchronizationServiceClass = get-SCOMClass -name:Microsoft.SystemCenter.DataWarehouseSynchronizationService
#$dataWarehouseSynchronizationServiceInstance = $dataWarehouseSynchronizationServiceClass | Get-SCOMClassInstance
$mg = New-Object Microsoft.EnterpriseManagement.ManagementGroup -ArgumentList localhost
$dataWarehouseSynchronizationServiceInstance = New-Object Microsoft.EnterpriseManagement.Common.CreatableEnterpriseManagementObject -ArgumentList $mg,$dataWarehouseSynchronizationServiceClass
$dataWarehouseSynchronizationServiceInstance.Item($dataWarehouseSynchronizationServiceClass.Item(āIdā)).Value = [guid]::NewGuid().ToString()
#Add the properties to discovery data
$discoveryData = new-object Microsoft.EnterpriseManagement.ConnectorFramework.IncrementalDiscoveryData
$discoveryData.Add($dwInstance)
$discoveryData.Add($dataWarehouseSynchronizationServiceInstance)
$discoveryData.Add($seviewerInstance)
$discoveryData.Add($advisorInstance)
$momConnectorId = New-Object System.Guid(ā7431E155-3D9E-4724-895E-C03BA951A352ā³)
$connector = $mg.ConnectorFramework.GetConnector($momConnectorId)
$discoveryData.Overwrite($connector)
#Update Global Settings. Needs to be done with PS V1 cmdlets
Add-pssnapin microsoft.enterprisemanagement.operationsmanager.client
cd $ConsoleDirectory
.\Microsoft.EnterpriseManagement.OperationsManager.ClientShell.NonInteractiveStartup.ps1
Set-DefaultSetting ManagementGroup\DataWarehouse\DataWarehouseDatabaseName $DataWarehouseDatabaseName
Set-DefaultSetting ManagementGroup\DataWarehouse\DataWarehouseServerName $DataWarehouseSqlServerInstance
If the script ran successfully and you run the commands specified in the diagnosis-section you should receive valid object- and settings information. The synchronization should start within a few moments.
Ā
Source:
http://scug.be/jan/2014/07/01/scom-dw-not-being-updated-with-operational-data/
Thanks for support, Im working now with data in my SCOM