Perché è importante utilizzare le viste SQL Server supportate con i report SCCM?

Mentre ero al Midwest Management Summit al Mall of America (MMSMOA) a maggio, è emerso l'argomento delle visualizzazioni SQL Server supportate. Qualcuno ha menzionato un modo semplice per convertire le query WQL in query SQL. Questo "suggerimento", tuttavia, non ha creato visualizzazioni SQL Server supportate e non tutti sembravano rendersi conto che si trattava di una cattiva idea. Per fare più luce su questo argomento, in questo post sto fornendo alcune informazioni sul motivo per cui è necessario utilizzare solo le visualizzazioni di SQL Server supportate e, cosa più importante, cosa succede quando non le si utilizza.

Se vuoi vedere quali viste e funzioni di SQL Server sono supportate dal team del prodotto SCCM, dai un'occhiata a questo post sul blog che ho pubblicato poco dopo MMSMOA, "Quali sono le visualizzazioni SQL Server supportate da utilizzare con i report SCCM?"

Perché le visualizzazioni di SQL Server supportate sono importanti?

Esistono tre motivi principali per cui si desidera utilizzare sempre le viste e le funzioni di SQL Server supportate ed è necessario evitare quelle non supportate con i report di System Center Configuration Manager (SCCM).

Loro sono:

1. Blocco delle transazioni

2. Concessione dei permessi dbo agli utenti

3. Modifica delle autorizzazioni su una tabella/vista/ecc.

Blocco delle transazioni

SCCM memorizza i dati nel database di SQL Server e un problema che può sorgere quando si accede ai dati dal database di SQL Server è chiamato "Blocco delle transazioni". Perché questo è importante per un amministratore SCCM e in particolare per la segnalazione di SCCM? Ecco la risposta semplice: quando viene eseguita una query SQL Server non supportata per un report, crea un blocco sulla tabella che viene interrogata. Questo blocco PU bloccare SCCM stesso dall'aggiornamento o dall'inserimento di dati nel database, o può anche bloccare altre query.

Per ulteriori informazioni, vedere questo Stack Overflow inviare, Comprensione di SQL Server LOCKS su query SELECT.

Anche i documenti Microsoft (vedi link sotto) sono utili per spiegare questo problema:

In qualsiasi database, la cattiva gestione delle transazioni spesso porta a contese e problemi di prestazioni in sistemi con molti utenti. Con l'aumento del numero di utenti che accedono ai dati, diventa importante disporre di applicazioni che utilizzino le transazioni in modo efficiente.

Più tardi, sotto Nozioni di base sul blocco e sul controllo delle versioni delle righe, i documenti dicono:

Ogni transazione richiede blocchi di tipo diverso sulle risorse, come righe, pagine o tabelle, da cui dipende la transazione. I blocchi impediscono ad altre transazioni di modificare le risorse in modo tale da causare problemi alla transazione che richiede il blocco. Ogni transazione libera i propri blocchi quando non ha più una dipendenza dalle risorse bloccate.

In poche parole, tutto questo sta dicendo che non ci sono due query che possono utilizzare lo stesso oggetto contemporaneamente. Per maggiori dettagli, vedere i documenti di SQL Server Microsoft: Guida al blocco delle transazioni e al controllo delle versioni delle righe.

Soluzione per il blocco delle transazioni

Per risolvere questo problema (blocco delle transazioni) il team SCCM utilizza l'hint per la query (Nolock) all'interno delle viste SQL Server supportate. L'hint per la query (Nolock) impedisce il verificarsi di questo problema.

permessi

Ti è mai successo prima? Crei un report con visualizzazioni di SQL Server non supportate, lo provi e poi lo carichi sul tuo sito SSRS. Funziona bene per te, quindi dai il rapporto a qualcun altro e, "uh-oh", lo eseguono e ricevono il seguente messaggio:

  • Si è verificato un errore durante l'elaborazione del report. (rsElaborazione interrotta)
    • L'esecuzione della query non è riuscita per il set di dati 'DataSet1'. (rsErrorExecutingCommand)
      • L'autorizzazione SELECT è stata negata sull'oggetto 'vSMS_Advertisement', database 'CM_CB1', schema 'dbo'.

Una volta stabilito che si tratta di un problema di autorizzazione, esegui una delle due cattive idee. Neanche tu concedere i permessi dbo a un utente o modificare le autorizzazioni su una tabella/vista/ecc.

Concessione delle autorizzazioni DBO a un utente

Per impostazione predefinita, solo gli account del proprietario del database (DBO) o dell'amministratore di sistema (SA) all'interno di SQL Server hanno accesso a tutti gli oggetti all'interno del database. Poiché le viste, le funzioni e così via di SQL Server non supportate non dispongono di autorizzazioni assegnate, solo gli account designati come DBO o SA possono accedere ai dati da tali viste, tabelle e così via. Pertanto, se si desidera che un utente con diritti bassi veda il dati all'interno di viste, tabelle, ecc. una delle opzioni è concedere loro i diritti SA o DBO sul database.

Ovviamente, questa è una cattiva idea a causa dei rischi per la sicurezza intrinseci. L'unico "vantaggio" è che questo metodo non ha effetto quando SCCM viene aggiornato a una versione successiva in un secondo momento.

Viste SQL Server supportate - Autorizzazioni

Modifica delle autorizzazioni su una tabella, vista, ecc.

L'altra tua opzione è meno rischiosa, ma ha ancora problemi di sicurezza ad essa associati. Puoi semplicemente regolare le autorizzazioni di "selezione" o "esecuzione" su viste, tabelle, ecc. Sebbene questo metodo rappresenti un rischio minore per la sicurezza, potrebbe impedirti di eseguire l'aggiornamento a una versione più recente di SCCM in un secondo momento. Come mai? La modifica del database SCCM non è supportata. Inoltre, vuoi davvero cambiare i permessi su tutte le viste, tabelle, ecc. che vuoi usare?

Viste SQL Server supportate

Quali sono i vantaggi dell'utilizzo delle viste e delle funzioni supportate di SQL Server con i report SCCM? Oltre a evitare i suddetti problemi di blocco delle transazioni e autorizzazioni, ecco un paio di altri motivi:

· Amministrazione basata sui ruoli (RBA). Puoi sfruttare RBA per le query. Ciò significa che se qualcuno non dovesse vedere i dati, con un rapporto RBA, non li vedrà!

· Miglioramenti alle prestazioni. Microsoft si sta impegnando molto in questi giorni per ottimizzare SQL Server, quindi le prestazioni sono più veloci e migliori! A questo proposito, stanno aggiornando solo le viste di SQL Server supportate. Del resto, le funzioni RBA sono dove stanno mettendo la maggior parte del loro impegno. Puoi vedere cosa intendo in questo post, "Query RBA e non RBA: quando è più lento in realtà più veloce?"

Quali viste e funzioni di SQL Server sono supportate da Microsoft? La risposta breve è qualsiasi oggetto SQL Server con autorizzazioni "select" o "execute" assegnate al ruolo smsschm_users. Per l'elenco completo, vedere il mio post sul blog, "Quali sono le visualizzazioni SQL Server supportate da utilizzare con SCCM Reporting??"

In caso di domande sulle visualizzazioni e le funzioni di SQL Server supportate, non esitate a contattarmi all'indirizzo @GarthMJ.

Scopri come Right Click Tools sta cambiando il modo in cui vengono gestiti i sistemi.

Aumenta immediatamente la produttività con la nostra Community Edition limitata e gratuita.

Inizia oggi con Right Click Tools:

Condividi questo:

Supporto

  • Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.

Contatti

  • Questo campo serve per la convalida e dovrebbe essere lasciato inalterato.
it_ITItalian