Share via


SIS Troubleshooting Guide

Obtaining a SIS tracing file for problem resolution

If you experience performance or other issues with SIS on your storage appliance, you should enable SIS tracing on your storage appliance. The SIS tracing file contains data that Microsoft support personnel can use to determine the cause of your issue(s).

Microsoft provides a command file that you can use to enable the collection of SIS tracing data. This is provided below.

To enable the collection of SIS tracing data, from a command prompt, navigate to the directory that contains the SisTraceEx2.cmd file, and then type SisTraceEx2.cmd.

When you are finished collecting tracing data, type SisTraceEx2.cmd to stop the collection process

For assistance in resolving your issue, email the SIS tracing data file (available at: %windir%\system32\LogFiles\WMI\sis*) to the following alias: TBD.com.

Dica

Microsoft support personnel may need additional information about your setup or hardware.

The SISTraceEX2 command file

The following is the command file used to enable or disable collection of SIS tracing data. To use this script, copy it to a location on your storage appliance.

@echo off
@setlocal

REM  Defaults for flags, level, and trace file are below

set FLAGS=0xFFFFFFF
set LEVEL=4
set TRACEID=SisLog

set SCRIPT_DIR=%~dp0
set SCRIPT=%0
set COMMAND=%1

set PDB_DIR=%SCRIPT_DIR%

REM
REM process optional arguments
REM

set MODULES=sisservice sisfilter sisadmin
set TMF_PATH=

:ProcessNextArg
set CURRENTARG=%2
set NEXTARG=%3
if not "%CURRENTARG%" == "" (

    if /i "%CURRENTARG%" == "modules" (
    
        set MODULES=%NEXTARG%

        if "%MODULES%" == "" (
            echo ERROR: missing module-list
            call :ShowUsage
            goto :eof
        )

    ) else if /i "%CURRENTARG%" == "flags" (

        set FLAGS=%NEXTARG%

        if "%FLAGS%" == "" (
            echo ERROR: missing flag
            call :ShowUsage
            goto :eof
        )

    ) else if /i "%CURRENTARG%" == "level" (

        set LEVEL=%NEXTARG%

        if "%LEVEL%" == "" (
            echo ERROR: missing level
            call :ShowUsage
            goto :eof
        )

    ) else (
    
        echo ERROR: unknown argument: %CURRENTARG%
        call :ShowUsage
        goto :eof
        
    )

    shift
    shift
    goto :ProcessNextArg
)


REM
REM replace colon with space
REM
set MODULES=%MODULES::= %

REM
REM remove double quote
REM
set MODULES=%MODULES:"=%

set LOG_FILE=%SystemRoot%\System32\LogFiles\WMI\Sis.etl


REM
REM generate the guid files with all specified trace guids
REM

set GUIDS_FILE=sistrace_%RANDOM%.guid

if exist "%GUIDS_FILE%" (del "%GUIDS_FILE%")

for %%m in (%MODULES%) do (
    if /i "%%m" == "sisfilter" (
        echo {001cee8c-35e0-41fe-8825-d962b7739499} %FLAGS% %LEVEL% >> %GUIDS_FILE%
    ) else if /i "%%m" == "sisservice" (
        echo {639bd915-517e-4add-839c-b96e2b645fe6} %FLAGS% %LEVEL% >> %GUIDS_FILE%
    ) else if /i "%%m" == "sisadmin" (
        echo {5c2c4b5d-3b62-427b-9e01-073cfb576c46} %FLAGS% %LEVEL% >> %GUIDS_FILE%
    ) else (
        if exist "%GUIDS_FILE%" (del "%GUIDS_FILE%")
        echo ERROR: unknown module: %%m
        call :ShowUsage
        goto :eof
    )
)

if /i "%COMMAND%"=="off" (

   logman stop %TRACEID% -ets
   call :UninstallLogConfig

) else if /i "%COMMAND%"=="file" (

   call :InstallLogConfig
   logman start %TRACEID% -o %LOG_FILE% -ets -pf %GUIDS_FILE% -mode circular -max 500 -ft 1

) else (

   echo ERROR: unknown command: %COMMAND%
   call :ShowUsage
)

if exist "%GUIDS_FILE%" (
    rem echo Trace GUIDs used:
    rem type "%GUIDS_FILE%"
    del "%GUIDS_FILE%"
)

goto :eof


rem
rem ShowUsage()
rem
:ShowUsage
echo Usage: %SCRIPT% file {common-options}
echo        %SCRIPT% off
echo Where,
echo        common-options - [modules module-list] 
echo                         [flags trace-flags] 
echo                         [level trace-level]
echo        module-list - a list of the following strings separated by colon
echo                          * sisservice
echo                          * sisfilter
echo                          * sisadmin
echo                      e.g. sisservice:sisfilter
echo Examples,
echo        %SCRIPT% file modules sisservice level 4 flags 0x0000FFFF
goto :eof


:InstallLogConfig

set REG_FILE=sistrace_%random%.reg

if exist "%REG_FILE%" (del "%REG_FILE%")

echo Windows Registry Editor Version 5.00 >> "%REG_FILE%"

echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\%TRACEID%] >> "%REG_FILE%"
echo "ClockType"=dword:00000002  >> "%REG_FILE%"
echo "FileName"="%%SystemRoot%%\\System32\\LogFiles\\WMI\\Sis.etl" >> "%REG_FILE%"
echo "FlushTimer"=dword:00000001 >> "%REG_FILE%"
echo "Guid"="{dbf038f0-b85c-437e-8392-48f2d137eaf8}" >> "%REG_FILE%"
echo "LogFileMode"=dword:00001202 >> "%REG_FILE%"
echo "FileMax"=dword:00000007 >> "%REG_FILE%"
echo "Start"=dword:00000001 >> "%REG_FILE%"

for %%m in (%MODULES%) do (
    if /i "%%m" == "sisfilter" (
        echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\%TRACEID%\{001cee8c-35e0-41fe-8825-d962b7739499}] >> "%REG_FILE%"
    ) else if /i "%%m" == "sisservice" (
        echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\%TRACEID%\{639bd915-517e-4add-839c-b96e2b645fe6}] >> "%REG_FILE%"
    ) else if /i "%%m" == "sisadmin" (
        echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\%TRACEID%\{5c2c4b5d-3b62-427b-9e01-073cfb576c46}] >> "%REG_FILE%"
    ) else (
        if exist "%REG_FILE%" (del "%REG_FILE%")
        echo ERROR: unknown module: %%m
        call :ShowUsage
        goto :eof
    )
    echo "Enabled"=dword:00000001 >> "%REG_FILE%"
    echo "EnableLevel"=dword:00000004 >> "%REG_FILE%"
    echo "MatchAnyKeyword"=dword:ffffffff >> "%REG_FILE%"
    echo "EnableFlags"=dword:0fffffff >> "%REG_FILE%"
)

call reg import "%REG_FILE%"

call del "%REG_FILE%"

goto :eof


:UninstallLogConfig

call reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\Autologger\%TRACEID% /f

goto :eof