Running a 32bit or 64bit CPU?

Sometimes Windows alone might not be able to tell you what your machine has. To be absolutely sure, if you at least know you have an Intel CPU, try their Processor Identification Utility.


You can also save a text file report summary of your machine. Here’s my machine at work:

Intel(R) Processor Identification Utility
Version: 4.21.20091215
Time Stamp: 2010/01/27 19:53:40
Operating System: 6.1-7600-
Number of processors in system: 1
Current processor: #1
Active cores per processor: 2
Disabled cores per processor: 0
Processor Name: Intel(R) Pentium(R) D CPU 830   3.00GHz
Type: 0
Family: F
Model: 4
Stepping: 4
Revision: 6
Maximum CPUID Level: 5
L1 Instruction Cache: 2 x 12 Kµops
L1 Data Cache: 2 x 16 KB
L2 Cache: 2 x 1 MB
Packaging: LGA775
Platform Compatibility Guide: 05B
Enhanced Intel SpeedStep(R) Technology: Yes
MMX(TM): Yes
Intel(R) SSE: Yes
Intel(R) SSE2: Yes
Intel(R) SSE3: Yes
Intel(R) SSE4: No
Enhanced Halt State: Yes
Execute Disable Bit: Yes
Intel(R) Hyper-Threading Technology: No
Intel(R) 64 Architecture: Yes
Intel(R) Virtualization Technology: No
Expected Processor Frequency: 3.0 GHz
Reported Processor Frequency: 3.0 GHz
Expected System Bus Frequency: 800 MHz
Reported System Bus Frequency: 800 MHz

FYI, this is from Intel:

Certain advanced Intel(R) processor technologies require system support features be present to be fully enabled. Please see the notifications below for system features required to enable the listed technologies.

Intel(R) Hyper-Threading Technology
Intel(R) Hyper-Threading Technology requires a computer system with a processor supporting Intel(R) HT Technology and an Intel(R) HT Technology-enabled chipset, BIOS and operating system. Performance will vary depending on the specific hardware and software you use. For more information including details on which processors support Intel(R) HT Technology, see

To verify your system for Intel(R) Hyper-Threading Technology, download the Intel(R) Hyper-Threading Technology Test Utility from

Intel(R) 64 Architecture
64-bit computing on Intel architecture requires a computer system with a processor, chipset, BIOS, operating system, device drivers and applications enabled for Intel(R) 64 architecture. Performance will vary depending on your hardware and software configurations. Consult with your system vendor for more information.

Intel(R) Virtualization Technology
Intel(R) Virtualization Technology requires a computer system with a processor, chipset, BIOS, enabling software and/or operating system, device drivers and applications designed for this feature. Performance will vary depending on your configuration. Contact your vendor for more information.

Intel, Intel Atom, Intel Core, Pentium, Xeon, Celeron, OverDrive, SpeedStep and MMX are trademarks of Intel Corporation in the United States and other countries. Copyright(C) 2010, Intel Corporation. All rights reserved.

JavaScript for the Windows Command Console

JSDB is a great JavaScript interpreter based on Mozilla’s Spidermonkey JavaScript engine. If you like working off the command console, I suggest you give it a go. Of course, not everything is supported, as there is no HTML/DOM context in the console. To compensate for it, the author of this tool has added some great features, like being able to connect to databases, use includes ( easily via the load(“file.js”) function ), and other network facilities, like fetching HTML content from other websites.

TSQL Function to Split JSON Data

SQL Server Central has a great function that converts a JSON string into a table. Worth checking out! (Unfortunately you have to register to see it, but it’s free.)

Function looks like this

-- object example, braces surround the name:value objects 
SELECT id, name, value FROM

Which returns a table:

id	name	    value
1	Apples	    20000
2	Oranges	    400
3	Apricots    507

Log Parser Lizard

Log Parser Lizard is a great free tool if you use Log Parser to parse IIS logs using SQL. It’s a visual tool to query the logs. It also comes with pre-made queries. Let’s take a look at one, “Requests and Full Status by Number of Hits” in IIS logs:

-- Let's query the IIS W3SVC80086301 Log file c:\temp\logs\ex080918.log
SELECT 	STRCAT(	cs-uri-stem, 
		REPLACE_IF_NOT_NULL(cs-uri-query, STRCAT('?',cs-uri-query))
		) AS Request, 
	STRCAT(	TO_STRING(sc-status), 		
		STRCAT(	'.',
			COALESCE(TO_STRING(sc-substatus), '?' )
		) AS Status, 
	COUNT(*) AS Total 
FROM c:\temp\logs\ex080918.log 
WHERE (sc-status >= 400) 
GROUP BY Request, Status 

Which gives you the following result (depending, of course, what’s in your logs):


Also, I could’ve queried all the log files put together, such as:

select * from c:\temp\logs\*log

Also, you can create global variables and use them in your queries so that you don’t always have to put the full path to a file. For example:


I’m setting the variable IISW3C equal to c:\temp\logs\ex*.log . The queries that come with this tool use these variables (keys) as a shortcut. For your IIS logs dir, you may want to set it up to point to C:\WINDOWS\system32\LogFiles\W3SVC80086301 . Once you’ve done this, you can do (HIT F5 to run query):

-- Get the top 10 from all IIS logs
select top 10 * from #IISW3C#

You can also view LogParser graphs from this tool. Let’s try the query to show all extension with total hits:

	COUNT(*) AS [Total Hits]
GROUP BY Extension 
-- Ignore .CFM extension
ORDER BY [Total Hits] DESC


LogParser to Query IIS logs using SQL

LogParser is a great way to query IIS logs (any text log, actually, that is delimited).

Once you have it installed (default install is to C:\Program Files\Log Parser 2.2), let’s try to query log file ex090915.log from directory C:\WINDOWS\system32\LogFiles\W3SVC1942853941 . The way you would do this, is this:

LogParser "select date, s-ip, cs-method from C:\WINDOWS\system32\LogFiles\W3SVC1942853941\ex090915.log" -rtp:-1

As you can probably imagine, “date”, “s-ip”, and “cs-method” are the column headers from the log file. The select statement goes in quotes. Also, rather naming a table, you give the path to the log file. What’s the argument -rtp:-1 ? If you don’t include this argument, every 10 results, it will prompt you to “press a key…,” then will show you the next batch of results. In any case, the select state we just ran will spit out the following in the console:

date       s-ip            cs-method 
---------- --------------- ---------
2009-09-15 GET
2009-09-15 GET
2009-09-15 GET
2009-09-15 GET
2009-09-15 GET
2009-09-15 GET
2009-09-15 POST
2009-09-15 POST
Elements processed: 27
Elements output:    27
Execution time:     0.02 seconds

LogParser will even generate graphs (.gif format) of your results.

If you want to use a GUI for your queries, I suggest you try Log Parser Lizard.