Le Service d’accès de système de centre de données peut ne pas démarrer lorsque SQL Server est utilisé comme magasin de stockage pour le Gestionnaire d’autorisations

Symptômes

Envisagez le scénario suivant. Microsoft System Center Operations Manager (SCOM) ou Microsoft System Center Service Manager est déployé. Microsoft SQL Server est utilisé comme magasin de stockage pour le Gestionnaire d’autorisations (AzMan). Dans ce scénario, le Service d’accès de système de centre de données peut ne pas démarrer. En outre, les messages d’événement suivants s’affiche :

Événement 26325



Événement 26339



Événement 26380



Pour plus d’informations sur ce problème et ces messages d’événement dans le Blog technique du système Centre de Service Manager, reportez-vous à la section .

Cause

Chacun de ces messages d’événement pointe vers un problème d’autorisation. Dans le Gestionnaire de Service de l’autorisation est importante car il permet la désignation d’un contrôle d’accès basé sur les rôles aux diverses fonctionnalités du produit.

Si vous utilisez les comptes locaux (non Windows) sur l’instance de SQL Server, et si le compte local doit être en mesure de disposer du rôle db_owner pour la base de données qui contient les tables AzMan, AzMan à un moment donné a tenté d’énumérer tous les utilisateurs qui disposent du rôle db_owner. Ensuite, il suppose que chaque élément de l’énumération aura un SID associé. (Cela n’est pas le cas pour les comptes locaux SQL.) Puis, le Service d’accès de données système Centre ne pas à démarrer et se traduit par un état d’erreur de ERROR_INVALID_SID.

Résolution

Pour résoudre ce problème, exécutez le script suivant. Cette modification de script le AzMan des procédures stockées afin que les comptes locaux (non Windows) ne sont pas énumérés lorsque les utilisateurs dans le rôle db_owner sont énumérés. Dans ce cas, le local SQL des comptes qui n’ont un SID valide associées sont ignorés.

Vous devez exécuter ce script sur la base de données SQL Server qui contient les tables AzMan pour System Center Operations Manager.

IF EXISTS (SELECT name FROM sysobjects        WHERE name = 'AzMan_Sp_Help_Role_Member' and type = 'P')
DROP PROCEDURE AzMan_Sp_Help_Role_Member
GO
CREATE PROCEDURE AzMan_Sp_Help_Role_Member
(
@RoleName sysname = NULL
)
AS
begin
-- RESULT SET FOR SINGLE ROLE
select DbRole = @RoleName, MemberName = name, MemberSID = sid from sys.database_principals
where type = 'U'
and principal_id in
(
select member_principal_id
from sys.database_role_members drm
inner join sys.database_principals dp
on drm.role_principal_id = dp.principal_id
where dp.name = @RoleName
)
order by 1, 2, 3

end
GO
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'AzMan_SPS_Get_DBOwners' and type = 'P')
DROP PROCEDURE AzMan_SPS_Get_DBOwners
GO
CREATE PROCEDURE AzMan_SPS_Get_DBOwners
(
@Return [int] output,
@ID [int]
)
AS
SET NOCOUNT ON
-- @ID is not used. But our internal implementation requires non-empty
-- parameter set where @Return is not considered one of them.

EXEC @Return = AzMan_Sp_Help_Role_Member 'db_owner'
SET NOCOUNT OFF

Return @Return
GO


Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×