Il servizio di accesso di sistema centro dati potrebbe non avviarsi quando SQL Server viene utilizzato come archivio di backup per Gestione autorizzazioni

Sintomi

Si consideri il seguente scenario. Viene distribuito Microsoft System Center Operations Manager (SCOM) o Microsoft System Center Service Manager. Microsoft SQL Server viene utilizzato come archivio di backup per Gestione autorizzazioni (AzMan). In questo scenario, il servizio di accesso di sistema centro dati potrebbe non avviarsi. Inoltre, viene visualizzato i messaggi di evento seguente:

Evento 26325



Evento 26339



Evento 26380



Per ulteriori informazioni su questo problema e questi messaggi di evento nel Engineering Blog System Center Service Manager, vedere .

Causa

Ognuno di questi messaggi di evento punta verso un problema di autorizzazione. In Gestione servizio di autorizzazione è importante perché consente la designazione del controllo di accesso basato sui ruoli per le varie funzionalità del prodotto.

Se si utilizzano gli account locali (non Windows) sull'istanza di SQL Server e l'account locale deve essere in grado di disporre del ruolo db_owner per il database che contiene le tabelle di AzMan, AzMan ad un certo punto viene effettuato un tentativo di enumerare tutti gli utenti che dispongono del ruolo db_owner. Quindi, si presuppone che ogni elemento dell'enumerazione disporrà di un SID associato. (Questo non è il caso per gli account locali di SQL.) Questa operazione, quindi il servizio di accesso dati di System Center di non avviare e comporta uno stato di errore di ERROR_INVALID_SID.

Risoluzione

Per risolvere questo problema, eseguire lo script seguente. Le modifiche di questo script di AzMan stored procedure in modo che gli account locali (non Windows) non vengono enumerati quando vengono enumerati gli utenti del ruolo db_owner. In questo caso, gli account di SQL locale che non dispone di un SID valido associate vengono ignorati.

È necessario eseguire questo script nel database di SQL Server che contiene le tabelle di AzMan per 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


Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×