API Valutazione SQL

Si applica a: SQL Server 2012 (11.x) e versioni successive Istanza gestita di SQL di Azure SQL Server in Azure Macchine virtuali SQL Server in Linux

L'API Valutazione SQL offre uno strumento per valutare la configurazione dell'istanza di SQL Server in uso in base alle procedure consigliate. L'API viene recapitata con un set di regole contenente regole consigliate suggerite dal team di SQL Server. Questo set di regole è migliorato con la versione delle nuove versioni, ma allo stesso tempo, l'API viene compilata per offrire una soluzione altamente personalizzabile ed estendibile. Gli utenti possono ottimizzare le regole predefinite e crearne uno personalizzato.

L'API Valutazione SQL è utile quando ci si vuole assicurare che la configurazione dell'istanza di SQL Server in uso sia conforme alle procedure consigliate. Dopo una valutazione iniziale, la stabilità della configurazione può essere monitorata tramite valutazioni pianificate a intervalli regolari.

L'API può essere usata per valutare:

L'API viene usata anche dall'estensione di valutazione di SQL Server per Azure Data Studio (ADS).

Nota

L'API Valutazione SQL fornisce funzionalità di valutazione per un'ampia gamma di aree, ma non è approfondita a livello di sicurezza. È consigliabile usare Valutazione della vulnerabilità SQL per migliorare in modo proattivo la sicurezza del database.

Regole

Le regole, talvolta denominate controlli, sono definite in file in formato JSON. Il formato del set di regole richiede che vengano specificati il nome e la versione di un set di regole. Quando si usano set di regole personalizzati, è quindi possibile sapere con facilità da quali set di regole provengono le specifiche raccomandazioni.

Il set di regole Microsoft è disponibile in GitHub. È possibile visualizzare l'intero set di regole nel repository degli esempi.

Cmdlet di Valutazione SQL ed estensioni associate

Usare l'API direttamente

L'API Valutazione SQL è disponibile e può essere usata tramite codice gestito come parte di uno di questi componenti:

Prima di iniziare a usare l'API Valutazione SQL, assicurarsi di installare uno di questi elementi:

Il Framework SMO è integrato dall'estensione dell'API Valutazione SQL che fornisce i metodi seguenti:

  • GetAssessmentItems: restituisce i controlli disponibili per un determinato oggetto SQL (IEnumerable<...>)

  • GetAssessmentResults: valuta in modo sincrono la valutazione e restituisce risultati ed errori se qualsiasi (IEnumerable<...>)

  • GetAssessmentResultsList: valuta in modo asincrono la valutazione e restituisce risultati ed errori se qualsiasi (Task<...>)

Usare l'API tramite PowerShell

Se si vuole richiamare l'API valutazione SQL tramite PowerShell, è necessario installare SQL Server modulo di PowerShell. Il SqlServer modulo fornisce due cmdlet che funzionano con l'API Valutazione SQL:

  • Get-SqlAssessmentItem: fornisce un elenco dei controlli di valutazione disponibili per un oggetto SQL Server

  • Invoke-SqlAssessment: fornisce risultati di una valutazione

Introduzione all'uso dei cmdlet di Valutazione SQL

La valutazione viene eseguita rispetto a un determinato oggetto di SQL Server. Nel set di regole predefinito sono presenti controlli solo per due tipi di oggetti: e (oltre a essi, l'API supporta due tipi di più tipi: ServerFilegroup e AvailabilityGroup).Database Se si vuole valutare un'istanza SQL Server e tutti i relativi database, è necessario eseguire i cmdlet di valutazione SQL per ogni oggetto separatamente. In alternativa, è possibile passare oggetti per la valutazione ai cmdlet di valutazione SQL in una variabile o nella pipeline.

SqlServer e RegisteredServer gli oggetti sono intercambiabili, in modo da poter passare qualsiasi oggetto ai cmdlet di valutazione SQL.

Per iniziare, vedere gli esempi seguenti.

  1. Ottenere un elenco dei controlli disponibili per un'istanza predefinita locale per acquisire familiarità con i controlli. In questo esempio viene eseguito il piping dell'output del Get-SqlInstance cmdlet al Get-SqlAssessmentItem cmdlet per passare l'oggetto istanza al cmdlet.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Ottenere un elenco dei controlli disponibili per tutti i database dell'istanza. In questo caso viene usato il cmdlet e un percorso implementato con il Get-Item provider di Windows PowerShell SQL Server per ottenere un elenco dei database e quindi eseguirne il piping nel Get-SqlDatabase cmdlet.

    Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
    

    È anche possibile usare il Get-SqlDatabase cmdlet per eseguire la stessa operazione.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Richiamare la valutazione per l'istanza e salvare i risultati in una tabella SQL Server. In questo esempio viene eseguito il piping dell'output del Get-SqlInstance cmdlet al Invoke-SqlAssessment cmdlet, che restituisce i risultati tramite pipe al Write-SqlTableData cmdlet. Il Invoke-Assessment cmdlet viene eseguito con il -FlattenOutput parametro in questo esempio. Questo parametro rende l'output adatto per il Write-SqlTableData cmdlet. Il secondo genera un errore se si omette il parametro.

    Get-SqlInstance -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    

    Verrà ora richiamata una valutazione per tutti i database dell'istanza e si aggiungeranno i risultati alla stessa tabella.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Per comprendere meglio le raccomandazioni, seguire le descrizioni e i collegamenti nella tabella.

  5. Personalizzare le regole in base all'ambiente e ai requisiti dell'organizzazione (vedere di seguito).

  6. Pianificare un'attività o un processo per eseguire la valutazione a intervalli regolari o su richiesta per misurare lo stato di avanzamento.

Personalizzare le regole

Le regole sono progettate per essere personalizzabili ed estendibili. Il set di regole Microsoft è progettato per essere usato nella maggior parte degli ambienti. Tuttavia, non è possibile avere un unico set di regole applicabile a ogni singolo ambiente. Gli utenti possono scrivere i propri file JSON e personalizzare le regole esistenti o aggiungerne di nuove. Alcuni esempi di personalizzazione e di set di regole completi rilasciati da Microsoft sono disponibili nel repository di esempi. Per altre informazioni su come eseguire i cmdlet di valutazione SQL con file JSON personalizzati, usare il Get-Help cmdlet.

Opzioni disponibili con la funzionalità di personalizzazione delle regole

Abilitare/disabilitare determinate regole o gruppi di regole (usando tag)

È possibile disattivare le regole specifiche quando non vengono applicate all'ambiente o fino a quando non viene eseguito il lavoro pianificato per correggere il problema.

Modificare i parametri di soglia

Le regole specifiche hanno soglie che vengono confrontate rispetto al valore corrente di una metrica per individuare un problema. Se le soglie predefinite non sono adatte, è possibile modificarle.

Aggiungere altre regole scritte dall'utente o da terze parti

È possibile combinare i set di regole aggiungendo uno o più file JSON come parametri alla chiamata api di valutazione SQL. L'organizzazione può scrivere tali file autonomamente o ottenerli da terze parti. Ad esempio, è possibile disporre di un file JSON che disabilita regole specifiche del set di regole Microsoft e di un altro file JSON di un esperto del settore che include regole utili per l'ambiente in uso, seguito da un altro file JSON che modifica alcuni valori di soglia di quello specifico file JSON.

Importante

Ti invitiamo a non usare i set di regole provenienti da origini non attendibili, fino a quando non li esamini accuratamente per assicurarsi che siano sicuri.

Passaggi successivi