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:
SQL Server in Macchine virtuali di Azure
Istanza gestita di SQL di Azure
SQL Server 2012 e versioni successive
SQL Server in sistemi e contenitori basati su Linux
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:
-
Versione rilasciata a giugno 2020 e versioni successive.
Oggetti SMO (SQL Server Management Objects)
Versione rilasciata a luglio 2019 e versioni successive.
-
Versione rilasciata a luglio 2019 e versioni successive.
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 ServerInvoke-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: Server
Filegroup
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.
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 alGet-SqlAssessmentItem
cmdlet per passare l'oggetto istanza al cmdlet.Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
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 nelGet-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
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 alInvoke-SqlAssessment
cmdlet, che restituisce i risultati tramite pipe alWrite-SqlTableData
cmdlet. IlInvoke-Assessment
cmdlet viene eseguito con il-FlattenOutput
parametro in questo esempio. Questo parametro rende l'output adatto per ilWrite-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
Per comprendere meglio le raccomandazioni, seguire le descrizioni e i collegamenti nella tabella.
Personalizzare le regole in base all'ambiente e ai requisiti dell'organizzazione (vedere di seguito).
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.