Accedi a Microsoft
Accedi o crea un account.
Salve,
Select a different account.
Hai più account
Scegli l'account con cui vuoi accedere.

Sintomi

Si consideri lo scenario seguente:

  • Si crea un criterio utilizzando Gestione basata su criteri (PBM) in Microsoft SQL Server 2008, Microsoft SQL Server 2008 R2 o Microsoft SQL Server 2012.

  • La modalità di valutazione per il criterio è Puntuale.

  • Una delle condizioni per il criterio contiene la funzione ExecuteSql() .


In questo scenario, quando viene eseguito il processo di agente SQL Server, l'agente genera falsi allarmi e viene registrato il seguente messaggio di errore nel file di log errori di SQL Server:

Errore: 34052, gravità: 16, stato: 1.
Criteri ' <Nome criterio>' sono stato violato.



Nota: Questo problema si verifica quando si esegue questo processo manualmente.

Causa

Questo problema si verifica perché viene violato un criterio PBM creato. PBM inserisce nel log degli errori messaggi di violazione dei criteri come meccanismo di rilevamento. Ciò indica che è necessario esaminare la configurazione di server per determinare perché il criterio viene violato.

Il problema è causato dall'utilizzo della funzione ExecuteSql() all'interno del criterio. Questa funzione consente all'autore di criteri creare una condizione espressa in Transact-SQL e può inoltre eseguire qualsiasi codice Transact-SQL all'interno di PBM. Pertanto, per impostazione predefinita, il contesto di protezione che viene eseguito il codice è un account con privilegi molto bassa MS_PolicyTsqlExecutionLogin # # # #. L'account MS_PolicyTsqlExecutionLogin # # # # non ha alcuna autorizzazione per qualsiasi database oltre al database msdb . Tuttavia, quando viene eseguito un processo pianificato, una delle prime istruzioni che viene aggiunto automaticamente è l'istruzione di utilizzare [< DBName >] . Questa istruzione fa sì che l'esito negativo del controllo di criteri.

Quando si esegue questo processo manualmente, SQL Server utilizza il contesto di protezione corrente. Se si dispone dell'autorizzazione per eseguire la query nel criterio, verrà valutate correttamente questo processo.

Soluzione alternativa

Per risolvere il problema, concedere all'account MS_PolicyTsqlExecutionLogin # # # # dei diritti appropriati per eseguire le istruzioni necessarie.

Ad esempio, il ruolo public è adeguato per determinate query da eseguire. Questo ruolo può essere modificato in base alle esigenze in base alle esigenze aziendali e i criteri della società. Tuttavia, è molto improbabile che la modifica, come questo comportamento è progettato per motivi di sicurezza.

Ulteriori informazioni

Per ulteriori informazioni sulla funzione ExecuteSQL() , visitare il seguente sito Web MSDN:

Introduzione alla funzione ExecuteSQL()

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?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×