ObjectNotFoundException in Run As Profiles/Run As Accounts

Exception:

Application: System Center Operations Manager 2007
Application Version: 6.0.5000.0
Severity: Error
Message:
Microsoft.EnterpriseManagement.Common.ObjectNotFoundException: Requested
object(s) not found.
at
Microsoft.EnterpriseManagement.DataAbstractionLayer.SdkDataAbstractionLayer.HandleIndigoExceptions(Exception
ex)
at
Microsoft.EnterpriseManagement.DataAbstractionLayer.InstanceSpaceOperations.GetMonitoringObjectByMonitoringObjectIds(List`1
monitoringObjectIds, String languageCode, MonitoringObjectMode
monitoringObjectMode)
at
Microsoft.EnterpriseManagement.ManagementGroup.GetPartialMonitoringObjects(ICollection`1
ids)
at
Microsoft.EnterpriseManagement.Mom.Internal.UI.Administration.RunAsProfile.ProfileAccounts.<>c__DisplayClass1.<OnPageAdded>b__0(Object
, ConsoleJobEventArgs )
at
Microsoft.EnterpriseManagement.Mom.Internal.UI.Console.ConsoleJobExceptionHandler.ExecuteJob(IComponent
jobOwner, EventHandler`1 job, Object sender, ConsoleJobEventArgs args)

 

If you encounter an ObjectNotFoundException in the UI when trying to browse run as profiles or accounts, the issue is an incorrect SQL query being used. It is fixed in SP1, but in the meantime, you can also fix the issue by running the following query against the SCOM database and then restarting the SDK service:

declare @querydef xml
set @querydef =
N'<QueryDefinitions xmlns="urn:DataAccess" xmlns:dal="urn:DataAccess"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"><QueryDefinition
dal:fullyDescribed="true"><Name>SecureStorageSecureReferenceByCriteria</Name><ObjectName>SecureStorageSecureReference</ObjectName><UsedBy
Component="Sdk" /><Description>Access to SecureStorageSecureReference
table.</Description><DataObject
xsi:type="SelectType"><Column><Name>SecureStorageReferenceId</Name><Source>SecureStorageSecureReference</Source><Type>uniqueidentifier</Type></Column><Column><Name>SecureStorageElementId</Name><Source>SecureStorageSecureReference</Source><Type>uniqueidentifier</Type></Column><Column><Name>SecureReferenceId</Name><Source>SecureStorageSecureReference</Source><Type>uniqueidentifier</Type></Column><Column><Name>HealthServiceId</Name><Source>SecureStorageSecureReference</Source><Type>uniqueidentifier</Type><IsNullable>true</IsNullable></Column><Column><Name>LastModified</Name><Source>SecureStorageSecureReference</Source><Type>datetime</Type></Column><Source><Table><Name>SecureStorageSecureReference</Name><Owner>dbo</Owner><Type>Table</Type></Table><Join><Type>Inner</Type><Table><Name>BaseManagedEntity</Name><Owner>dbo</Owner><Type>Table</Type></Table><JoinCondition>dbo.[BaseManagedEntity].[BaseManagedEntityId]
= dbo.[SecureStorageSecureReference].[HealthServiceId] AND
dbo.[BaseManagedEntity].[IsDeleted] =
0</JoinCondition></Join></Source></DataObject></QueryDefinition></QueryDefinitions>'
insert into dbo.DataAccessLayerSetting
([SettingType], [SettingData])
values (0, @querydef)