How do I run statistics on MS Sql Server database?

I have a few statistics that I need to figure out and I have never used the MS SQL 'Profiler'.  Can someone help me understand how to gather the following stats.  I am also under the assumption that I need to use the Profiler to gather this information - please correct me if I'm wrong! :)  

avg/max queries per second
avg/max number of rows returned
ave/max number of connections (active)

Also, the purpose of this execise is to help me understand what sort of hardware I should purchase for the amount of bandwidth required on my database server.  Are these the stats I really need to know?  Please help - newbie here.
Who is Participating?
chapmandewConnect With a Mentor Commented:
You can get most of this data using profiler, but you can use performance monitor for these stats as well.  

perf mon

RiteshShahConnect With a Mentor Commented:
well as long as hardware concern, it should be depends on your database size, maximum users at any given time, expected DB growth in near future and your own needs and budgets. However, you can use profiler to see your current performance.  Have a look at following URLs for profiler,289483,sid87_gci1171978,00.html
Mark WillsConnect With a Mentor Topic AdvisorCommented:
Getting a good idea of the type of activity on the database is a good idea to help benchmark the nature of your database. You will also want to look at growth, and probably reads and writes (to help determine typical nature of disk activity - adding data or retrieving data). But getting throughput type results (such as queries per second) is heavily dependant on the current performance of your machine. If using just as a benchmark, then fine, but if using to indicate the volume of activity, then it could be tainted by other factors.

There is a lot of information you can get out of SQL Server itself, but running perfmon over a defined period of activity will probably help formulate a slightly more "qualified" set of measures (and something to fall back on). So, make sure you run the monitor over a fair representation of the nature and type of work you are doing.

One of the difficulties you have is differentiating the type of activity and stats you can gather with the health and performance of your queries. So, you will probably also need to gather some memory, and processor stats as well.

Things like %Processor time, PageLifeExpectancy, BufferCacheHitRatio, ProcessorQueueLength, DiskQueueLength, Disk reads and writes, and can be worthwhile looking for dropped packets on the network, because may as well check network bandwidth at the same time.

A lot of the scripts needed can be found at :

There is also some good doco (word documents) to download from MS :   and    these are worthwhile reading because of the nature and types of metrics they discuss along with some queries used to extract data.

Improve Your Query Performance Tuning

In this FREE six-day email course, you'll learn from Janis Griffin, Database Performance Evangelist. She'll teach 12 steps that you can use to optimize your queries as much as possible and see measurable results in your work. Get started today!

Mark WillsTopic AdvisorCommented:
Oh, and here is a handy script showing that a lot of info is in SQL Server.
SELECT master_files.database_id
, database_name
, name
,databases.recovery_model recovery_model
,databases.user_access_desc user_access_desc
,databases.state_desc state_desc
,master_files.type_desc type_desc
,master_files.physical_name physical_name
,master_files.state_desc state_desc
,master_files.size size_8KBPages
,master_files.max_size max_size_8KBPages
,master_files.growth growth
,master_files.is_percent_growth is_percent_growth
,dm_io_virtual_file_stats.sample_ms MillisecondsSinceComputerWasStarted
,dm_io_virtual_file_stats.num_of_reads num_of_reads
,dm_io_virtual_file_stats.num_of_bytes_read num_of_bytes_read
,dm_io_virtual_file_stats.io_stall_read_ms io_stall_read_ms
,dm_io_virtual_file_stats.num_of_writes num_of_writes
,dm_io_virtual_file_stats.num_of_bytes_written num_of_bytes_written
,dm_io_virtual_file_stats.io_stall_write_ms io_stall_write_ms
,dm_io_virtual_file_stats.io_stall io_stall
,dm_io_virtual_file_stats.size_on_disk_bytes size_on_disk_bytes
FROM sys.dm_io_virtual_file_stats(NULL, NULL) dm_io_virtual_file_stats
LEFT JOIN sys.master_files master_files ON dm_io_virtual_file_stats.database_id = master_files.database_id AND dm_io_virtual_file_stats.file_id = master_files.file_id
LEFT JOIN sys.databases databases ON master_files.database_id = databases.database_id
ORDER BY,master_files.type DESC;

Open in new window

burtonrhodesAuthor Commented:
Thanks to all for your suggestions.  Let me go through the advice offered over the next several hours and assign point accordingly.
Mark WillsTopic AdvisorCommented:
One more for you then, and that is a list of statistics available :
burtonrhodesAuthor Commented:
Many thanks for all your responses.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.