Delen via


API voor SQL-beoordeling

Van toepassing op: SQL Server 2012 (11.x) en hoger Azure SQL Managed Instance SQL Server op Azure Virtual Machines SQL Server op Linux

De SQL Assessment-API biedt een mechanisme om de configuratie van uw SQL Server te evalueren voor aanbevolen procedures. De API wordt geleverd met een regelset met best practice-regels die door het SQL Server-team worden voorgesteld. Deze regelset is uitgebreid met de release van nieuwe versies, maar tegelijkertijd is de API gebouwd om een zeer aanpasbare en uitbreidbare oplossing te bieden. Gebruikers kunnen de standaardregels afstemmen en hun eigen regels maken.

De SQL Assessment-API is handig als u ervoor wilt zorgen dat uw SQL Server-configuratie in overeenstemming is met aanbevolen aanbevolen procedures. Na een eerste evaluatie kan configuratiestabiliteit worden bijgehouden door regelmatig geplande evaluaties.

De API kan worden gebruikt om het volgende te evalueren:

Opmerking

De SQL Assessment-API biedt een evaluatie op verschillende gebieden, maar gaat niet diep in de beveiliging. U wordt aangeraden de evaluatie van beveiligingsproblemen voor SQL Server te gebruiken om de beveiliging van uw database proactief te verbeteren.

Reglement

Regels (ook wel controles genoemd) worden gedefinieerd in bestanden met JSON-indeling. Voor het regelsformaat moet de naam en versie van de regelset worden opgegeven. Wanneer u aangepaste regelsets gebruikt, kunt u eenvoudig weten welke aanbevelingen van welke regelset afkomstig zijn.

De door Microsoft verzonden regelset is beschikbaar op GitHub. U kunt de hele regelset bekijken in de opslagplaats met voorbeelden.

SQL Assessment-cmdlets en bijbehorende extensies

De API rechtstreeks gebruiken

De SQL Assessment-API is beschikbaar en kan worden gebruikt via beheerde code als onderdeel van een van deze onderdelen:

Voordat u de SQL Assessment-API zelf gaat gebruiken, moet u een van deze volgende installeren:

Het SMO Framework wordt aangevuld met de SQL Assessment API-extensie die de volgende methoden biedt:

  • GetAssessmentItems: retourneert beschikbare controles voor een bepaald SQL-object (IEnumerable<...>)
  • GetAssessmentResults: evalueert synchroon de evaluatie en retourneert resultaten en fouten indien van toepassing (IEnumerable<...>)
  • GetAssessmentResultsList: Asynchroon evalueert de evaluatie en retourneert resultaten en fouten indien van toepassing (Task<...>)

De API gebruiken via PowerShell

Als u de SQL Assessment-API wilt aanroepen via PowerShell, moet u de SQL Server PowerShell-module installeren. De SqlServer module biedt twee cmdlets die werken met de SQL Assessment-API:

  • Get-SqlAssessmentItem: Biedt een lijst met beschikbare evaluatiecontroles voor een SQL Server-object
  • Invoke-SqlAssessment: Geeft resultaten van een evaluatie

Aan de slag met SQL Assessment-cmdlets

Er wordt een evaluatie uitgevoerd op basis van een gekozen SQL Server-object. In de standaardregelset zijn er alleen controles op twee soorten objecten: Server en Database (naast de standaardregelset ondersteunt de API nog twee soorten: Filegroup en AvailabilityGroup). Als u een SQL Server-exemplaar en alle bijbehorende databases wilt evalueren, moet u de SQL Assessment-cmdlets afzonderlijk uitvoeren voor elk object. U kunt ook objecten voor evaluatie doorgeven aan de SQL-evaluatie-cmdlets in een variabele of de pijplijn.

SqlServer en RegisteredServer objecten zijn uitwisselbaar, zodat u elke aan de SQL-evaluatie-cmdlets kunt doorgeven.

Doorloop de volgende voorbeelden om aan de slag te gaan.

  1. Haal een lijst op van beschikbare controles voor een lokale standaardinstantie om vertrouwd te raken met de controles. In dit voorbeeld wordt de uitvoer van de Get-SqlInstance cmdlet doorgegeven aan de Get-SqlAssessmentItem cmdlet om het exemplaarobject door te geven.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. Haal een lijst met beschikbare controles op voor alle databases van het exemplaar. Hier gebruiken we de Get-Item cmdlet en een pad dat is geïmplementeerd met de Windows PowerShell SQL Server-provider om een lijst met de databases op te halen en deze vervolgens door te geven aan de Get-SqlDatabase cmdlet.

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

    U kunt ook de Get-SqlDatabase cmdlet gebruiken om hetzelfde te doen.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. Roep evaluatie aan voor het exemplaar en sla de resultaten op in een SQL Server-tabel. In dit voorbeeld wordt de uitvoer van de Get-SqlInstance cmdlet doorgesluisd naar de Invoke-SqlAssessment cmdlet. De resultaten worden doorgesluisd naar de Write-SqlTableData cmdlet. De Invoke-Assessment cmdlet wordt uitgevoerd met de -FlattenOutput parameter in dit voorbeeld. Deze parameter maakt de uitvoer geschikt voor de Write-SqlTableData cmdlet. Deze laatste genereert een fout als u de parameter weglaat.

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

    We gaan nu een evaluatie aanroepen voor alle databases van het exemplaar en de resultaten toevoegen aan dezelfde tabel.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. Volg beschrijvingen en koppelingen in de tabel om meer inzicht te hebben in de aanbevelingen.

  5. Pas de regels aan op basis van uw omgeving en organisatievereisten (zie hieronder).

  6. Plan een taak of taak om de evaluatie regelmatig of op aanvraag uit te voeren om de voortgang te meten.

Regels aanpassen

Regels zijn ontworpen om aanpasbaar en uitbreidbaar te zijn. De regelset van Microsoft is ontworpen voor de meeste omgevingen. Het is echter onmogelijk om één regelset te hebben die werkt voor elke omgeving. Gebruikers kunnen hun eigen JSON-bestanden schrijven en bestaande regels aanpassen of nieuwe regels toevoegen. Voorbeelden van aanpassing en volledige door Microsoft uitgebrachte regelset zijn beschikbaar in de opslagplaats met voorbeelden. Gebruik de Get-Help cmdlet voor meer informatie over het uitvoeren van de SQL-evaluatie-cmdlets met aangepaste JSON-bestanden.

Beschikbare opties met regelaanpassingsfunctie

Bepaalde regels of groepen regels in- of uitschakelen (met behulp van tags)

U kunt specifieke regels dempen wanneer ze niet worden toegepast op uw omgeving of totdat gepland werk wordt uitgevoerd om het probleem op te lossen.

Drempelwaardeparameters wijzigen

Specifieke regels hebben drempelwaarden die worden vergeleken met de huidige waarde van een metrische waarde om een probleem te achterhalen. Als de standaarddrempelwaarden niet passen, kunt u deze wijzigen.

Meer regels toevoegen die door u of derden zijn geschreven

U kunt regelsets combineren door een of meer JSON-bestanden als parameters toe te voegen aan uw SQL Assessment API-aanroep. Uw organisatie kan deze bestanden schrijven of verkrijgen van een derde partij. U kunt bijvoorbeeld uw JSON-bestand hebben dat specifieke regels uit de Microsoft-regelset uitschakelt en een ander JSON-bestand door een expert in de branche die regels bevat die u nuttig vindt voor uw omgeving, gevolgd door een ander JSON-bestand dat enkele drempelwaarden in dat JSON-bestand wijzigt.

Belangrijk

We raden u aan geen regelsets te gebruiken die afkomstig zijn van niet-vertrouwde bronnen, totdat u ze grondig bekijkt om ervoor te zorgen dat ze veilig zijn.