Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
van Azure SQL Managed Instance
Gebruik dynamische beheerweergaven (DMV's) om de uitvoering van externe scripts (Python en R) te bewaken, resources te gebruiken die worden gebruikt, problemen te diagnosticeren en prestaties af te stemmen in SQL Server Machine Learning Services.
In dit artikel vindt u de DMV's die specifiek zijn voor SQL Server Machine Learning Services. U vindt ook voorbeeldquery's die het volgende laten zien:
- Instellingen en configuratieopties voor machine learning
- Actieve sessies met externe Python- of R-scripts
- Uitvoeringsstatistieken voor de externe runtime voor Python en R
- Prestatiemeteritems voor externe scripts
- Geheugengebruik voor het besturingssysteem, SQL Server en externe resourcegroepen
- Geheugenconfiguratie voor SQL Server en externe resourcegroepen
- Resource Governor-resourcegroepen, inclusief externe resourcegroepen
- Geïnstalleerde pakketten voor Python en R
Zie Systeem dynamische beheerweergaven voor meer algemene informatie over DMV's.
Aanbeveling
U kunt ook de aangepaste rapporten gebruiken om SQL Server Machine Learning Services te bewaken. Zie Machine Learning bewaken met behulp van aangepaste rapporten in Management Studio voor meer informatie.
Dynamische beheerweergaven
De volgende dynamische beheerweergaven kunnen worden gebruikt bij het bewaken van machine learning-workloads in SQL Server. Als u een query wilt uitvoeren op de DMV's, hebt u toestemming nodig VIEW SERVER STATE voor de instantie.
| Dynamische beheerweergave | Typologie | Description |
|---|---|---|
| sys.dm_external_script_requests | Execution | Geeft een rij terug voor elk actieve werknemersaccount waarop een extern script wordt uitgevoerd. |
| sys.dm_external_script_execution_stats | Execution | Retourneert één rij voor elk type externe scriptaanvraag. |
| sys.dm_os_performance_counters | Execution | Retourneert een rij per prestatiemeteritem die wordt onderhouden door de server. Als u de zoekvoorwaarde WHERE object_name LIKE '%External Scripts%'gebruikt, kunt u deze informatie gebruiken om te zien hoeveel scripts zijn uitgevoerd, welke scripts werden uitgevoerd met behulp van welke verificatiemodus, of hoeveel R- of Python-aanroepen zijn uitgegeven op het exemplaar in het algemeen. |
| sys.dm_resource_governor_external_resource_pools | Middelenbeheerder | Retourneert informatie over de huidige status van de externe resourcegroep in Resource Governor, de huidige configuratie van resourcegroepen en statistieken van de resourcegroep. |
| sys.dm_resource_governor_external_resource_pool_affinity | Middelenbeheerder | Retourneert cpu-affiniteitsinformatie over de huidige configuratie van de externe resourcepool in Resource Governor. Retourneert één rij per scheduler in SQL Server waarbij elke scheduler is toegewezen aan een afzonderlijke processor. Gebruik deze weergave om de toestand van een planner te bewaken of om uit de hand gelopen taken te identificeren. |
Zie Catalogusweergaven en Resource Governor-gerelateerde dynamische beheerweergaven voor informatie over het bewaken van SQL Server-exemplaren.
Instellingen en configuratie
Bekijk de installatie-instelling en configuratieopties van Machine Learning Services.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_server_registry, sys.configurations en SERVERPROPERTY voor meer informatie over de weergaven en functies die worden gebruikt.
SELECT CAST(SERVERPROPERTY('IsAdvancedAnalyticsInstalled') AS INT) AS IsMLServicesInstalled
, CAST(value_in_use AS INT) AS ExternalScriptsEnabled
, COALESCE(SIGN(SUSER_ID(CONCAT (
CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(128))
, '\SQLRUserGroup'
, CAST(serverproperty('InstanceName') AS NVARCHAR(128))
))), 0) AS ImpliedAuthenticationEnabled
, COALESCE((
SELECT CAST(r.value_data AS INT)
FROM sys.dm_server_registry AS r
WHERE r.registry_key LIKE 'HKLM\Software\Microsoft\Microsoft SQL Server\%\SuperSocketNetLib\Tcp'
AND r.value_name = 'Enabled'
), - 1) AS IsTcpEnabled
FROM sys.configurations
WHERE name = 'external scripts enabled';
De query retourneert de volgende kolommen:
| Rubriek | Description |
|---|---|
| IsMLServicesInstalled | Retourneert 1 als SQL Server Machine Learning Services is geïnstalleerd voor het exemplaar. Anders wordt 0 geretourneerd. |
| ExterneScriptsGeactiveerd | Retourneert 1 als externe scripts zijn ingeschakeld voor het exemplaar. Anders wordt 0 geretourneerd. |
| ImpliedAuthenticationEnabled | Retourneert 1 als impliciete verificatie is ingeschakeld. Anders wordt 0 geretourneerd. De configuratie voor impliciete verificatie wordt gecontroleerd door te controleren of er een aanmelding voor SQLRUserGroup bestaat. |
| IsTcpEnabled | Retourneert 1 als het TCP/IP-protocol is ingeschakeld voor het exemplaar. Anders wordt 0 geretourneerd. Zie Default SQL Server Network Protocol Configurationvoor meer informatie. |
Actieve sessies
Bekijk de actieve sessies waarop externe scripts worden uitgevoerd.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_exec_requests, sys.dm_external_script_requests en sys.dm_exec_sessions voor meer informatie over de gebruikte dynamische beheerweergaven.
SELECT r.session_id, r.blocking_session_id, r.status, DB_NAME(s.database_id) AS database_name
, s.login_name, r.wait_time, r.wait_type, r.last_wait_type, r.total_elapsed_time, r.cpu_time
, r.reads, r.logical_reads, r.writes, er.language, er.degree_of_parallelism, er.external_user_name
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_external_script_requests AS er
ON r.external_script_request_id = er.external_script_request_id
INNER JOIN sys.dm_exec_sessions AS s
ON s.session_id = r.session_id;
De query retourneert de volgende kolommen:
| Rubriek | Description |
|---|---|
| sessie-id | Identificeert de sessie die is gekoppeld aan elke actieve primaire verbinding. |
| blocking_session_id (blokkade_sessie_id) | Id van de sessie die de aanvraag blokkeert. Als deze kolom NULL is, wordt de aanvraag niet geblokkeerd of is de sessiegegevens van de blokkerende sessie niet beschikbaar (of kunnen niet worden geïdentificeerd). |
| status | Status van de aanvraag. |
| databasenaam | Naam van de huidige database voor elke sessie. |
| gebruikersnaam | Sql Server-aanmeldingsnaam waaronder de sessie momenteel wordt uitgevoerd. |
| wachttijd | Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom de duur in milliseconden van de huidige wachttijd. Is niet nulbaar. |
| wait_type | Als de aanvraag momenteel is geblokkeerd, retourneert deze kolom het type wachttijd. Zie sys.dm_os_wait_stats voor informatie over typen wachttijden. |
| last_wait_type | Als deze aanvraag eerder is geblokkeerd, retourneert deze kolom het type van de laatste wachttijd. |
| totale verstreken tijd | De totale tijd die is verstreken in milliseconden sinds de aanvraag is aangekomen. |
| CPU-tijd | CPU-tijd in milliseconden die door de aanvraag wordt gebruikt. |
| leesbewerkingen | Het aantal leesbewerkingen dat door deze aanvraag is uitgevoerd. |
| logical_reads | Het aantal logische leesbewerkingen dat door de aanvraag is uitgevoerd. |
| schrijfbewerkingen | Aantal schrijfbewerkingen dat door deze aanvraag wordt uitgevoerd. |
| language | Trefwoord dat een ondersteunde scripttaal vertegenwoordigt. |
| degree_of_parallelism | Een getal dat het aantal gemaakte parallelle processen aangeeft. Deze waarde kan afwijken van het aantal parallelle processen dat is aangevraagd. |
| external_user_name | Het Windows-werkrolaccount waaronder het script is uitgevoerd. |
Uitvoeringsstatistieken
Bekijk de uitvoeringsstatistieken voor de externe runtime voor R en Python. Alleen statistieken van RevoScaleR-, revoscalepy- of microsoftml-pakketfuncties zijn momenteel beschikbaar.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_external_script_execution_stats voor meer informatie over de gebruikte dynamische beheerweergave. De query retourneert alleen functies die meer dan één keer zijn uitgevoerd.
SELECT language, counter_name, counter_value
FROM sys.dm_external_script_execution_stats
WHERE counter_value > 0
ORDER BY language, counter_name;
De query retourneert de volgende kolommen:
| Rubriek | Description |
|---|---|
| language | Naam van de geregistreerde externe scripttaal. |
| counter_naam | Naam van een geregistreerde externe scriptfunctie. |
| tellerwaarde | Het totale aantal instanties waarin de geregistreerde externe scriptfunctie op de server is aangeroepen. Deze waarde is cumulatief, te beginnen met de tijd dat de functie op het exemplaar is geïnstalleerd en kan niet opnieuw worden ingesteld. |
Prestatiestatistieken
Bekijk de prestatiemeteritems met betrekking tot de uitvoering van externe scripts.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_os_performance_counters voor meer informatie over de gebruikte dynamische beheerweergave.
SELECT counter_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%External Scripts%'
sys.dm_os_performance_counters voert de volgende prestatiemeteritems uit voor externe scripts:
| Counter | Description |
|---|---|
| Totaal aantal uitvoeringen | Aantal externe processen dat is gestart door lokale of externe aanroepen. |
| Parallelle uitvoeringen | Aantal keren dat een script de @parallel specificatie bevat en dat SQL Server een parallel queryplan kon genereren en gebruiken. |
| Streaming-uitvoeringen | Aantal keren dat de streamingfunctie is aangeroepen. |
| SQL CC-uitvoeringen | Het aantal externe scripts wordt uitgevoerd waarop de aanroep extern is geïnstantieerd en SQL Server is gebruikt als rekencontext. |
| Impliciete authenticatie-aanmeldingen | Aantal keren dat een ODBC-loopback-aanroep is gedaan met behulp van impliciete verificatie; Dat wil gezegd, de SQL Server heeft de aanroep uitgevoerd namens de gebruiker die de scriptaanvraag verzendt. |
| Totale uitvoeringstijd (ms) | De tijd die is verstreken tussen het gesprek en de voltooiing van het gesprek. |
| Uitvoeringsfouten | Aantal keren dat scripts fouten hebben gerapporteerd. Dit aantal bevat geen R- of Python-fouten. |
Geheugengebruik
Bekijk informatie over het geheugen dat wordt gebruikt door het besturingssysteem, SQL Server en de externe pools.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_resource_governor_external_resource_pools en sys.dm_os_sys_info voor meer informatie over de gebruikte dynamische beheerweergaven.
SELECT physical_memory_kb, committed_kb
, (SELECT SUM(peak_memory_kb)
FROM sys.dm_resource_governor_external_resource_pools AS ep
) AS external_pool_peak_memory_kb
FROM sys.dm_os_sys_info;
De query retourneert de volgende kolommen:
| Rubriek | Description |
|---|---|
| physical_memory_kb | De totale hoeveelheid fysiek geheugen op de computer. |
| committed_kb | Het vastgelegde geheugen in kilobytes (KB) in het geheugenbeheer. Omvat geen gereserveerd geheugen in de geheugenbeheerder. |
| external_pool_peak_memory_kb | De som van de maximale hoeveelheid geheugen die in kilobytes wordt gebruikt voor alle externe resourcegroepen. |
Geheugenconfiguratie
Bekijk informatie over het percentage van de maximale geheugenconfiguratie van SQL Server en externe resourcepools. Als SQL Server wordt uitgevoerd met de standaardwaarde, max server memory (MB)wordt deze beschouwd als 100% van het besturingssysteemgeheugen.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.configurations en sys.dm_resource_governor_external_resource_pools voor meer informatie over de gebruikte weergaven.
SELECT 'SQL Server' AS name
, CASE CAST(c.value AS BIGINT)
WHEN 2147483647 THEN 100
ELSE (SELECT CAST(c.value AS BIGINT) / (physical_memory_kb / 1024.0) * 100 FROM sys.dm_os_sys_info)
END AS max_memory_percent
FROM sys.configurations AS c
WHERE c.name LIKE 'max server memory (MB)'
UNION ALL
SELECT CONCAT ('External Pool - ', ep.name) AS pool_name, ep.max_memory_percent
FROM sys.dm_resource_governor_external_resource_pools AS ep;
De query retourneert de volgende kolommen:
| Rubriek | Description |
|---|---|
| naam | Naam van de externe resourcegroep of SQL Server. |
| max_memory_percent | Het maximale geheugen dat SQL Server of de externe resourcegroep kan gebruiken. |
Resourcegroepen
In SQL Server Resource Governor vertegenwoordigt een resourcegroep een subset van de fysieke resources van een exemplaar. U kunt limieten opgeven voor de hoeveelheid CPU, fysieke IO en geheugen die binnenkomende toepassingsaanvragen, waaronder het uitvoeren van externe scripts, binnen de resourcegroep kunnen gebruiken. Bekijk de resourcegroepen die worden gebruikt voor SQL Server en externe scripts.
Voer de onderstaande query uit om deze uitvoer op te halen. Zie sys.dm_resource_governor_resource_pools en sys.dm_resource_governor_external_resource_pools voor meer informatie over de gebruikte dynamische beheerweergaven.
SELECT CONCAT ('SQL Server - ', p.name) AS pool_name
, p.total_cpu_usage_ms, p.read_io_completed_total, p.write_io_completed_total
FROM sys.dm_resource_governor_resource_pools AS p
UNION ALL
SELECT CONCAT ('External Pool - ', ep.name) AS pool_name
, ep.total_cpu_user_ms, ep.read_io_count, ep.write_io_count
FROM sys.dm_resource_governor_external_resource_pools AS ep;
De query retourneert de volgende kolommen:
| Rubriek | Description |
|---|---|
| zwembad_naam | Naam van de resourcepool. SQL Server-resourcegroepen worden voorafgegaan door SQL Server en externe resourcegroepen worden voorafgegaan door External Pool. |
| Totale CPU-gebruikstijd in uren | Het cumulatieve CPU-gebruik in milliseconden sinds de statistieken van Resource Governor opnieuw zijn ingesteld. |
| read_io_afgerond_totaal | De totale lees-IO's zijn voltooid sinds de statistieken van Resource Governor opnieuw zijn ingesteld. |
| write_io_completed_total | De totale schrijf-I/O's die zijn voltooid sinds de statistieken van Resource Governor opnieuw zijn ingesteld. |
Geïnstalleerde pakketten
U kunt de R- en Python-pakketten weergeven die zijn geïnstalleerd in SQL Server Machine Learning Services door een R- of Python-script uit te voeren dat deze uitvoert.
Geïnstalleerde pakketten voor R
Bekijk de R-pakketten die zijn geïnstalleerd in SQL Server Machine Learning Services.
Voer de onderstaande query uit om deze uitvoer op te halen. De query gebruikt een R-script om R-pakketten te bepalen die zijn geïnstalleerd met SQL Server.
EXECUTE sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", "Version", "Depends", "License", "LibPath")]);'
WITH result sets((Package NVARCHAR(255), Version NVARCHAR(100), Depends NVARCHAR(4000)
, License NVARCHAR(1000), LibPath NVARCHAR(2000)));
De geretourneerde kolommen zijn:
| Rubriek | Description |
|---|---|
| Package | Naam van het geïnstalleerde pakket. |
| Versie | Versie van het pakket. |
| Dat hangt ervan af. | Geeft een lijst weer van de pakketten waarop het geïnstalleerde pakket afhankelijk is. |
| Licentie | Licentie voor het geïnstalleerde pakket. |
| LibPath | Directory waar u het pakket kunt vinden. |
Geïnstalleerde pakketten voor Python
Bekijk de Python-pakketten die zijn geïnstalleerd in SQL Server Machine Learning Services.
Voer de onderstaande query uit om deze uitvoer op te halen. De query gebruikt een Python-script om te bepalen welke Python-pakketten zijn geïnstalleerd met SQL Server.
EXECUTE sp_execute_external_script @language = N'Python'
, @script = N'
import pkg_resources
import pandas
OutputDataSet = pandas.DataFrame(sorted([(i.key, i.version, i.location) for i in pkg_resources.working_set]))'
WITH result sets((Package NVARCHAR(128), Version NVARCHAR(128), Location NVARCHAR(1000)));
De geretourneerde kolommen zijn:
| Rubriek | Description |
|---|---|
| Package | Naam van het geïnstalleerde pakket. |
| Versie | Versie van het pakket. |
| Locatie | Directory waar u het pakket kunt vinden. |