Taal
Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft. Data.SqlClient ondersteunt runtimestatistieken. Schakel statistieken in door de StatisticsEnabled eigenschap op een geldig SqlConnection object in te stellen op True.
Nadat u statistieken hebt ingeschakeld, roept u RetrieveStatistics aan om een momentopname van een bepaald tijdstip in het IDictionary object te krijgen. Doorloop de niet-geordende naam/waardeparen om de tellers te lezen. Als u de tellers opnieuw wilt instellen, roept u ResetStatistics aan.
Als u geen statistieken hebt ingeschakeld, retourneert RetrieveStatistics de initiële waarde van elke teller zonder een uitzondering te genereren. Nadat u statistieken hebt uitgeschakeld, behouden de tellers de waarden die tot dat punt zijn verzameld.
Alle statistische waarden die worden verzameld, zijn per verbinding.
Beschikbare statistische waarden
De Microsoft SQL Server provider toont 18 statistische waarden. Lees de eigenschap van het woordenboek Count om het aantal beschikbare items op te halen. Alle tellers gebruikenInt64, het 64-bits type met de naam long in C# en Long in Visual Basic.
De maximale waarde, Int64.MaxValue is (2^63)-1. Op die limiet zijn tellers niet meer nauwkeurig. De grootste geldige waarde voor een statistiek is daarom Int64.MaxValue - 1, of (2^63)-2.
Notitie
Een woordenlijst wordt gebruikt voor het retourneren van providerstatistieken, omdat het aantal, de namen en de volgorde van de geretourneerde statistieken in de toekomst kunnen veranderen. Toepassingen moeten niet afhankelijk zijn van een specifieke waarde die wordt gevonden in de woordenlijst, maar moeten in plaats daarvan controleren of de waarde er is en dienovereenkomstig vertakkingen hebben.
In de volgende tabel worden de beschikbare statistische waarden beschreven. De sleutelnamen voor de afzonderlijke waarden worden niet gelokaliseerd in regionale versies van .NET Framework.
| Sleutelnaam | Beschrijving |
|---|---|
BuffersReceived |
Retourneert het aantal TDS-pakketten (tabular data stream) dat is ontvangen door de provider van SQL Server nadat de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. |
BuffersSent |
Retourneert het aantal TDS-pakketten dat door de provider naar SQL Server wordt verzonden nadat statistieken zijn ingeschakeld. Grote opdrachten kunnen meerdere buffers vereisen. Als een grote opdracht bijvoorbeeld naar de server wordt verzonden en er zes pakketten nodig zijn, ServerRoundtrips wordt dit met één verhoogd en BuffersSent met zes verhoogd. |
BytesReceived |
Retourneert het aantal bytes aan gegevens in de TDS-pakketten die door de provider van SQL Server zijn ontvangen zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld. |
BytesSent |
Retourneert het aantal bytes aan gegevens dat is verzonden naar SQL Server in TDS-pakketten nadat de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. |
ConnectionTime |
De hoeveelheid tijd (in milliseconden) dat de verbinding open is sinds de statistieken zijn ingeschakeld (totale verbindingstijd als de statistieken al waren ingeschakeld voordat de verbinding werd geopend). |
CursorOpens |
Retourneert het aantal keren dat een cursor is geopend via de verbinding zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld. Houd er rekening mee dat alleen-lezen/alleen-voorwaartse resultaten die door SELECT instructies worden geretourneerd, niet als cursors worden beschouwd en dus geen invloed hebben op deze teller. |
ExecutionTime |
Retourneert de cumulatieve hoeveelheid tijd (in milliseconden) die de provider heeft besteed aan verwerking zodra statistieken zijn ingeschakeld, inclusief de tijd die is besteed aan het wachten op antwoorden van de server en de tijd die is besteed aan het uitvoeren van code in de provider zelf. De klassen met timingcode zijn: SqlConnectionSqlCommandSqlDataReaderSqlDataAdapterSqlTransactionSqlCommandBuilderOm prestatiekritieke leden zo klein mogelijk te houden, worden de volgende leden niet getimed: SqlDataReaderthis[] operator (alle overloads)GetBooleanGetCharGetDateTimeGetDecimalGetDoubleGetFloatGetGuidGetInt16GetInt32GetInt64GetNameGetOrdinalGetSqlBinaryGetSqlBooleanGetSqlByteGetSqlDateTimeGetSqlDecimalGetSqlDoubleGetSqlGuidGetSqlInt16GetSqlInt32GetSqlInt64GetSqlMoneyGetSqlSingleGetSqlStringGetStringIsDBNull |
IduCount |
Retourneert het totale aantal INSERT, DELETEen UPDATE instructies die via de verbinding worden uitgevoerd zodra de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. |
IduRows |
Retourneert het totale aantal rijen dat wordt beïnvloed door INSERT, DELETEen UPDATE instructies die via de verbinding worden uitgevoerd zodra de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. |
NetworkServerTime |
Retourneert de cumulatieve hoeveelheid tijd (in milliseconden) die de provider heeft besteed aan het wachten op antwoorden van de server zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld. |
PreparedExecs |
Retourneert het aantal voorbereide opdrachten dat via de verbinding wordt uitgevoerd zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld. |
Prepares |
Retourneert het aantal instructies dat is voorbereid via de verbinding zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld. |
SelectCount |
Geeft het aantal SELECT statements terug dat via de verbinding wordt uitgevoerd nadat de toepassing statistieken heeft ingeschakeld. Bevat FETCH statements waarmee rijen van cursors worden opgehaald. Voor SELECT statements werkt de provider het aantal bij wanneer SqlDataReader het einde van de resultaten bereikt. |
SelectRows |
Retourneert het aantal rijen dat is geselecteerd zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld. Deze teller weerspiegelt alle rijen die zijn gegenereerd door SQL-instructies, zelfs rijen die niet daadwerkelijk door de aanroeper zijn gebruikt. Als u bijvoorbeeld een gegevenslezer sluit voordat u de volledige resultatenset leest, heeft dit geen invloed op het aantal. Dit omvat de rijen die zijn opgehaald uit cursors via FETCH-statements. |
ServerRoundtrips |
Retourneert het aantal keren dat de verbinding opdrachten naar de server heeft verzonden en een antwoord heeft ontvangen zodra de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. |
SumResultSets |
Retourneert het aantal resultatensets dat is gebruikt nadat de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. Dit omvat bijvoorbeeld een resultatenset die wordt geretourneerd aan de client. Voor cursors wordt elke ophaal- of blokophaalbewerking beschouwd als een onafhankelijke resultaatset. |
Transactions |
Retourneert het aantal gebruikerstransacties dat is gestart zodra de toepassing de provider heeft gebruikt en statistieken heeft ingeschakeld, inclusief terugdraaiacties. Als een verbinding actief is met auto commit, wordt elke opdracht beschouwd als een transactie. Met deze teller wordt het aantal transacties verhoogd zodra een BEGIN TRAN instructie wordt uitgevoerd, ongeacht of de transactie later wordt doorgevoerd of teruggedraaid. |
UnpreparedExecs |
Retourneert het aantal niet-voorbereide instructies dat via de verbinding wordt uitgevoerd zodra de toepassing is begonnen met het gebruik van de provider en statistieken heeft ingeschakeld. |
Een waarde ophalen
In de volgende consoletoepassing ziet u hoe u statistieken voor een verbinding inschakelt, vier afzonderlijke statistiekwaarden ophaalt en deze naar het consolevenster schrijft.
Notitie
In het volgende voorbeeld wordt de voorbeelddatabase AdventureWorks gebruikt die is opgenomen in SQL Server. Bij de verbindingsreeks in de voorbeeldcode wordt ervan uitgegaan dat de database is geïnstalleerd en beschikbaar is op de lokale computer. Wijzig de verbindingsreeks indien nodig voor uw omgeving.
Option Strict On
Imports System
Imports System.Collections
Imports System.Data
Imports Microsoft.Data.SqlClient
Module Module1
Sub Main()
Dim connectionString As String = GetConnectionString()
Using awConnection As New SqlConnection(connectionString)
' StatisticsEnabled is False by default.
' It must be set to True to start the
' statistic collection process.
awConnection.StatisticsEnabled = True
Dim productSQL As String = "SELECT * FROM Production.Product"
Dim productAdapter As _
New SqlDataAdapter(productSQL, awConnection)
Dim awDataSet As New DataSet()
awConnection.Open()
productAdapter.Fill(awDataSet, "ProductTable")
' Retrieve the current statistics as
' a collection of values at this point
' and time.
Dim currentStatistics As IDictionary = _
awConnection.RetrieveStatistics()
Console.WriteLine("Total Counters: " & _
currentStatistics.Count.ToString())
Console.WriteLine()
' Retrieve a few individual values
' related to the previous command.
Dim bytesReceived As Long = _
CLng(currentStatistics.Item("BytesReceived"))
Dim bytesSent As Long = _
CLng(currentStatistics.Item("BytesSent"))
Dim selectCount As Long = _
CLng(currentStatistics.Item("SelectCount"))
Dim selectRows As Long = _
CLng(currentStatistics.Item("SelectRows"))
Console.WriteLine("BytesReceived: " & bytesReceived.ToString())
Console.WriteLine("BytesSent: " & bytesSent.ToString())
Console.WriteLine("SelectCount: " & selectCount.ToString())
Console.WriteLine("SelectRows: " & selectRows.ToString())
Console.WriteLine()
Console.WriteLine("Press any key to continue")
Console.ReadLine()
End Using
End Sub
Function GetConnectionString() As String
' To avoid storing the connection string in your code,
' you can retrieve it from a configuration file.
Return "..."
End Function
End Module
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using Microsoft.Data.SqlClient;
namespace CS_Stats_Console_GetValue
{
class Program
{
static void Main(string[] args)
{
string connectionString = GetConnectionString();
using (SqlConnection awConnection =
new SqlConnection(connectionString))
{
// StatisticsEnabled is False by default.
// It must be set to True to start the
// statistic collection process.
awConnection.StatisticsEnabled = true;
string productSQL = "SELECT * FROM Production.Product";
SqlDataAdapter productAdapter =
new SqlDataAdapter(productSQL, awConnection);
DataSet awDataSet = new DataSet();
awConnection.Open();
productAdapter.Fill(awDataSet, "ProductTable");
// Retrieve the current statistics as
// a collection of values at this point
// and time.
IDictionary currentStatistics =
awConnection.RetrieveStatistics();
Console.WriteLine("Total Counters: " +
currentStatistics.Count.ToString());
Console.WriteLine();
// Retrieve a few individual values
// related to the previous command.
long bytesReceived =
(long) currentStatistics["BytesReceived"];
long bytesSent =
(long) currentStatistics["BytesSent"];
long selectCount =
(long) currentStatistics["SelectCount"];
long selectRows =
(long) currentStatistics["SelectRows"];
Console.WriteLine("BytesReceived: " +
bytesReceived.ToString());
Console.WriteLine("BytesSent: " +
bytesSent.ToString());
Console.WriteLine("SelectCount: " +
selectCount.ToString());
Console.WriteLine("SelectRows: " +
selectRows.ToString());
Console.WriteLine();
Console.WriteLine("Press any key to continue");
Console.ReadLine();
}
}
private static string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "...";
}
}
}
Alle waarden ophalen
In de volgende consoletoepassing ziet u hoe u statistieken voor een verbinding inschakelt, alle beschikbare statistische waarden ophaalt met behulp van de enumerator en deze naar het consolevenster schrijft.
Notitie
In het volgende voorbeeld wordt de voorbeelddatabase AdventureWorks gebruikt die is opgenomen in SQL Server. Bij de verbindingsreeks in de voorbeeldcode wordt ervan uitgegaan dat de database is geïnstalleerd en beschikbaar is op de lokale computer. Wijzig de verbindingsreeks indien nodig voor uw omgeving.
Option Strict On
Imports System
Imports System.Collections
Imports System.Data
Imports Microsoft.Data.SqlClient
Module Module1
Sub Main()
Dim connectionString As String = GetConnectionString()
Using awConnection As New SqlConnection(connectionString)
' StatisticsEnabled is False by default.
' It must be set to True to start the
' statistic collection process.
awConnection.StatisticsEnabled = True
Dim productSQL As String = "SELECT * FROM Production.Product"
Dim productAdapter As _
New SqlDataAdapter(productSQL, awConnection)
Dim awDataSet As New DataSet()
awConnection.Open()
productAdapter.Fill(awDataSet, "ProductTable")
' Retrieve the current statistics as
' a collection of values at this point
' and time.
Dim currentStatistics As IDictionary = _
awConnection.RetrieveStatistics()
Console.WriteLine("Total Counters: " & _
currentStatistics.Count.ToString())
Console.WriteLine()
Console.WriteLine("Key Name and Value")
' Note the entries are unsorted.
For Each entry As DictionaryEntry In currentStatistics
Console.WriteLine(entry.Key.ToString() & _
": " & entry.Value.ToString())
Next
Console.WriteLine()
Console.WriteLine("Press any key to continue")
Console.ReadLine()
End Using
End Sub
Function GetConnectionString() As String
' To avoid storing the connection string in your code,
' you can retrieve it from a configuration file.
Return "..."
End Function
End Module
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Data.SqlClient;
namespace CS_Stats_Console_GetAll
{
class Program
{
static void Main(string[] args)
{
string connectionString = GetConnectionString();
using (SqlConnection awConnection =
new SqlConnection(connectionString))
{
// StatisticsEnabled is False by default.
// It must be set to True to start the
// statistic collection process.
awConnection.StatisticsEnabled = true;
string productSQL = "SELECT * FROM Production.Product";
SqlDataAdapter productAdapter =
new SqlDataAdapter(productSQL, awConnection);
DataSet awDataSet = new DataSet();
awConnection.Open();
productAdapter.Fill(awDataSet, "ProductTable");
// Retrieve the current statistics as
// a collection of values at this point
// and time.
IDictionary currentStatistics =
awConnection.RetrieveStatistics();
Console.WriteLine("Total Counters: " +
currentStatistics.Count.ToString());
Console.WriteLine();
Console.WriteLine("Key Name and Value");
// Note the entries are unsorted.
foreach (DictionaryEntry entry in currentStatistics)
{
Console.WriteLine(entry.Key.ToString() +
": " + entry.Value.ToString());
}
Console.WriteLine();
Console.WriteLine("Press any key to continue");
Console.ReadLine();
}
}
private static string GetConnectionString()
{
// To avoid storing the connection string in your code,
// you can retrieve it from a configuration file.
return "...";
}
}
}