SQL Profiler doubleclick does not open .trc files any more
Whenever I double-click on a profiler trace *.trc file I get the error
Unrecognized command line argument. All command line arguments will be ignored. ..Please run 'profiler.exe -?' to see a list of valid command line arguments.
I suspect this happened when I installed a component of Visual Studio called the ATL Trace Tool, which messed up my associations somehow.
To prove what’s going on, I used my favorite debugger WinDbg.exe to see what parameters were being passed into the process.
!peb is sufficient to show the parameters as follows:
CommandLine: '"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\PROFILER.EXE" "G:\files\SPID00128.TRC"'
Hmm, it didn’t put any switches in the command line. I read from Profiler.exe help with switch -? that the valid switches for passing a file name is –f or –F
Let’s try to fix this. Find a profiler .trc file and right click to bring up the Open With context menu…
Reset the default program to open the .trc file back to SQL Server profiler.
Voila! Now when I doubleclick a .trc it works.
To prove that it changes somethings after it worked, I attached the debugger, and did !peb this time.
By re-associating the file, the /f is added back into the command line parameters.
CommandLine: '"C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\profiler.exe" /f"G:\files\SPID00128.TRC"'
This can be seen from the default associations as well… in Windows 7
Control Panel > Programs >Default Programs > Set Associations
Updates:
If you like more control than what Windows shows, there is a handy tool from this link which can give a richer experience to edit program associations in Windows 7. https://defaultprogramseditor.com/
Underneath the Win 7 covers I see this selection sets two registry keys
1. The choice to associate a .trc file extension to sql profiler should live in this reg key (Start > run > regedit)
HKEY_USERS\<your sid>\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\ .trc
There are 3 subkeys there:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.trc\OpenWithList
a = REG_SZ = PROFILER.exe
MRUList = REG_SZ = a
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.trc\OpenWithProgids
SQLServerProfilerTraceData = REG_NONE
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.trc\UserChoice
Progid = REG_SZ = SQLServerProfilerTraceData
2. Then profiler has a default OPEN action - it knows how to open the file because the file name is passed as an argument - %1 with quotes (in case there are spaces in the current file name's path.
HKEY_CLASSES_ROOT\Applications\PROFILER.EXE\shell\open\command
(default) = "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\PROFILER.EXE" "%1"
Comments
- Anonymous
February 23, 2014
For me, with SQL 2008 R2, the HKEY_CLASSES_ROOTApplicationsPROFILER.EXEshellopencommand was actually at: HKEY_CLASSES_ROOTSQLServerProfilerTraceDatashellopencommand And to get it to work it needed setting to: "C:Program Files (x86)Microsoft SQL Server100ToolsBinnprofiler.exe" /f"%1" The /f had somehow gotten removed. Adding it back manually resolved the issue.