SqlErrorLogEvent-klasse

Van toepassing op:SQL Server

Biedt eigenschappen voor het bekijken van gebeurtenissen in een gespecificeerd SQL Server-logbestand.

Syntax

class SQLErrorLogEvent
{
    stringFileName;
    stringInstanceName;
    datetimeLogDate;
    stringMessage;
    stringProcessInfo;
};

Eigenschappen

De SQLErrorLogEvent-klasse definieert de volgende eigenschappen.

Property Description
Bestandsnaam Gegevenstype: tekenreeks

Toegangstype: Alleen-lezen

De naam van het foutlogbestand.
Instantienaam Gegevenstype: tekenreeks

Toegangstype: Alleen-lezen

Kwalificaties: Sleutel

De naam van de instantie van SQL Server waar het logbestand zich bevindt.
LogDate Gegevenstype: datum/tijd-

Toegangstype: Alleen-lezen

Kwalificaties: Sleutel

De datum en tijd waarop het evenement in het logbestand is vastgelegd.
Message Gegevenstype: tekenreeks

Toegangstype: Alleen-lezen

Het gebeurtenisbericht.
ProcessInfo Gegevenstype: tekenreeks

Toegangstype: Alleen-lezen

Informatie over de bronsessie-ID (SPID) voor het evenement.

Remarks

Type Naam
MOF - sqlmgmprovider.mof(SQL Server 2022 (16.x) en latere versies)
- sqlmgmproviderxpsp2up.mof(SQL Server 2019 (15.x) en eerdere versies)
DLL sqlmgmprovider.dll
Namespace \root\Microsoft\SqlServer\ComputerManagement10

Example

Het volgende voorbeeld laat zien hoe je waarden kunt ophalen voor alle geregistreerde gebeurtenissen in een gespecificeerd logbestand. Om het voorbeeld uit te voeren, vervang <Instance_Name> door de naam van de instantie van SQL Server, zoals 'Instance1', en vervang 'File_Name' door de naam van het foutlogbestand, zoals 'ERRORLOG.1'.

on error resume next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\MICROSOFT\SqlServer\ComputerManagement10")
set logEvents = objWmiService.ExecQuery("SELECT * FROM SqlErrorLogEvent WHERE InstanceName = '<Instance_Name>' AND FileName = 'File_Name'")
  
For Each logEvent in logEvents
WScript.Echo "Instance Name: " & logEvent.InstanceName & vbNewLine _
    & "Log Date: " & logEvent.LogDate & vbNewLine _
    & "Log File Name: " & logEvent.FileName & vbNewLine _
    & "Process Info: " & logEvent.ProcessInfo & vbNewLine _
    & "Message: " & logEvent.Message & vbNewLine _
  
Next

Comments

Wanneer InstanceName of FileName niet worden vermeld in de WQL-instructie, geeft de query informatie terug voor de standaardinstantie en het huidige SQL Server-logbestand. Bijvoorbeeld, de volgende WQL-instructie retourneert alle loggebeurtenissen uit het huidige logbestand (ERRORLOG) op de standaardinstantie (MSSQLSERVER).

"SELECT * FROM SqlErrorLogEvent"

Security

Om via WMI verbinding te maken met een SQL Server-logbestand, moet je de volgende rechten hebben op zowel de lokale als de externe computer:

  • Lees toegang tot de Root\Microsoft\SqlServer\ComputerManagement10 WMI-naamruimte. Standaard heeft iedereen leesrechten via de permissie 'Account inschakelen'.

  • Lees toestemming naar de map die de foutlogboeken bevat. Standaard bevinden de foutlogboeken zich in het volgende pad (waarbij <Drive> de schijf vertegenwoordigt waar je SQL Server hebt geïnstalleerd en <InstanceName> de naam is van de instantie van SQL Server):

    <Drive>:\Programmabestanden\Microsoft SQL Server\MSSQL13.<InstanceName>\MSSQL\Log

Als je via een firewall verbinding maakt, zorg er dan voor dat er een uitzondering is ingesteld in de firewall voor WMI op externe doelcomputers. Voor meer informatie, zie Verbinding maken met WMI op afstand vanaf Windows Vista.