<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tag 'performance monitoring'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=performance+monitoring&amp;orTags=0</link><description>Search results matching tag 'performance monitoring'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>[New England] SQL Saturday #203: April 5-6, Cambridge MA</title><link>http://sqlblog.com/blogs/adam_machanic/archive/2013/01/29/new-england-sql-saturday-203-april-5-6-cambridge-ma.aspx</link><pubDate>Tue, 29 Jan 2013 16:10:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47387</guid><dc:creator>Adam Machanic</dc:creator><description>&lt;p&gt;&lt;a href="http://www.sqlsaturday.com/203/eventhome.aspx"&gt;SQL Saturday returns to the Boston area this April&lt;/a&gt;, with what is certain to be an &lt;b&gt;exceptional speaker and session lineup&lt;/b&gt;. (The actual schedule will be posted soon, but in the meantime you can see the &lt;a href="http://www.sqlsaturday.com/203/schedule.aspx"&gt;submitted sessions&lt;/a&gt;.)&lt;/p&gt;&lt;p&gt;The free event ($10 if you'd like to eat lunch) will take place on Saturday, April 6. Highly recommended for anyone in the area who is interested in bettering your database skills!&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Friday, April 5&lt;/b&gt;, as a lead in to the Saturday event, I'll be delivering my popular full-day "&lt;a href="http://dataeducation.eventbrite.com/"&gt;&lt;b&gt;No More Guessing!&lt;/b&gt;&lt;/a&gt;" seminar. This seminar teaches a &lt;b&gt;solid, proven performance troubleshooting methodology&lt;/b&gt; designed to help you quickly &lt;b&gt;find the actual root cause of performance problems&lt;/b&gt;. Full information is available &lt;a href="http://dataeducation.eventbrite.com/"&gt;on the registration site&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;&lt;b&gt;This seminar has sold out at events like PASS Summit and SQLBits&lt;/b&gt;, and it is being offered in Boston at the discounted price, so book early to avoid disappointment.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Huge thanks to &lt;a href="http://www.mikehillwig.com/"&gt;Mike Hillwig&lt;/a&gt; for taking the lead on putting together this event. Looking forward to seeing many of you there!&lt;br&gt;&lt;/p&gt;</description></item><item><title>Who is Active v11.11</title><link>http://sqlblog.com/files/folders/beta/entry42453.aspx</link><pubDate>Thu, 22 Mar 2012 21:07:52 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:42453</guid><dc:creator>adam machanic</dc:creator><description>&lt;p&gt;Fixes the following issues:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Bug with transaction information not working for databases with "th" in their name&lt;/li&gt;&lt;li&gt;Bug with very large CPU times causing an overflow exception on SQL Server 2005&lt;/li&gt;&lt;li&gt;Excessive tempdb utilization caused by large string concatenation&lt;/li&gt;&lt;li&gt;Added host_process_id to additional_info collection&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;</description></item><item><title>Who is Active v11.03</title><link>http://sqlblog.com/files/folders/beta/entry36726.aspx</link><pubDate>Fri, 08 Jul 2011 15:31:21 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36726</guid><dc:creator>adam machanic</dc:creator><description>Contains fixes for a couple of minor bugs that existed in v11.00.&lt;br&gt;</description></item><item><title>An in-depth analysis of SQL Sentry's overhead</title><link>http://sqlblog.com/blogs/aaron_bertrand/archive/2011/07/05/an-in-depth-analysis-of-sql-sentry-s-overhead.aspx</link><pubDate>Tue, 05 Jul 2011 13:30:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36543</guid><dc:creator>AaronBertrand</dc:creator><description>&lt;p&gt;One of my first major projects at SQL Sentry was framed shortly after I joined the company: to publish an analysis of the overhead that Performance Advisor and Event Manager place on both the server(s) being monitored and on the server(s) doing the monitoring. Every vendor wants to sell you on the "zero impact" and "no footprint" lines, but we all know that it is not possible for you to accurately measure performance on a server without also causing at least some performance degradation by virtue of performing said monitoring. So what does "zero impact" really mean in those cases? Most vendors won't tell you, and I can understand why: there are so many variables and "what ifs" involved that they couldn't possibly tell you - at least not with a straight face.&lt;br&gt;&lt;br&gt;As I would tend to advise you even from an impartial, outside perspective (regardless of the solution being researched), the only way you can get the absolute truth about impact is to test it for yourself, in your own environment, using your hardware, data, network, usage patterns, etc. On the other hand, we realize that you may not have an environment yet, or you may not have a suitable replica of production (we all know how most folks feel about testing in production). We know this because, even with trial versions available and frequently downloaded, two of the most common questions we get about our software are "how much overhead will this cause on the monitored instance?" and "what kind of server(s) will we need for the monitoring components?"&lt;br&gt;&lt;br&gt;To help answer this question without all of the effort that might be required on your part, the paper sets out to show, in our simulated environment, roughly how much additional load is placed on a single monitored server, and the total load placed on the monitoring servers when they are watching 1, 10, 25, 50 and 100 SQL Server instances. We tried to make the test environment as generic as possible, with separate servers for each monitoring component (to isolate and measure the resource impact of each), and a virtual environment of over 100 servers (we went virtual here to ease creation and re-creation of the environment, and also for the obvious budgetary benefits). Now, your environment may be quite different, so the numbers shown in the paper may not necessarily reflect your exact scenario. But they should be close enough to give you a general idea of what to expect from our software.&lt;br&gt;&lt;br&gt;This is the first of many impact studies we will be conducting and making public. We are not afraid to show you our numbers, even in cases where they might not be the most flattering, because we can often learn as much from this process as you can. We are quite happy with the results of these tests, but we look forward to further tests where we measure the impact on a single monitored server with more variables and subject to heavier and more realistic workloads.&lt;br&gt; &lt;br&gt;&lt;/p&gt;

&lt;blockquote&gt;&lt;font size="4"&gt;&lt;a href="http://bit.ly/SQLSentryOverheadAnalysisDOC" title="http://downloads.sqlsentry.net/downloads/SQLSentryOverheadAnalysis.doc" target="_blank" style="color:#991111;"&gt;&lt;b&gt;Download the paper&lt;/b&gt;&lt;/a&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp; (.doc, 2.1 MB)&lt;br&gt;&lt;/blockquote&gt;
&amp;nbsp;
&lt;br&gt;</description></item><item><title>Who is Active? v11.00</title><link>http://sqlblog.com/files/folders/release/entry35240.aspx</link><pubDate>Wed, 27 Apr 2011 04:20:03 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:35240</guid><dc:creator>adam machanic</dc:creator><description>&lt;p&gt;Who is Active? is a comprehensive server activity stored procedure 
based on the SQL Server 2005 and 2008 dynamic management views (DMVs). 
Think of it as sp_who2 on a hefty dose of anabolic steroids. Features 
supported by Who is Active? include:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Server activity 
collection, including data about currently running T-SQL, server 
resources consumed by the request, and query plan collection&lt;/li&gt;&lt;li&gt;Real-time wait statistics collection and blocker reporting&lt;/li&gt;&lt;li&gt;Delta collection mode, in order to find out what processes are doing over time&lt;/li&gt;&lt;li&gt;A
 number of filter options to help you narrow down the scope of data 
returned, the order of rows, and the number and order of output columns&lt;/li&gt;&lt;li&gt;Ability to collect to a table, rather than sending the data back as a rowset&lt;/li&gt;&lt;li&gt;An online help system to help you figure out what options are available. Use the @help=1 option to hit the ground running.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;License:&lt;/p&gt;
&lt;p&gt;Who
 is Active? is free to download and use for personal, educational, and 
internal corporate purposes, provided that the included comment header 
is preserved. Redistribution or sale of Who is Active?, in whole or in 
part, is prohibited without the author's express written consent. &lt;/p&gt;
&lt;p&gt;Donate! Support this project: &lt;a href="http://tinyurl.com/WhoIsActiveDonate"&gt;http://tinyurl.com/WhoIsActiveDonate&lt;/a&gt;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;hr&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Change log for the most recent several versions: &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v11.00 &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added wait information for OLEDB/linked server waits&lt;/li&gt;&lt;li&gt;Wait
 collection will now "downgrade" to get_task_info = 1 style data if no 
other information is available in get_task_info = 2 mode&lt;/li&gt;&lt;li&gt;Fixed sort order bug w/ multicolumn sorts&lt;/li&gt;&lt;li&gt;Added header information to online help&lt;/li&gt;&lt;li&gt;Added a login_time column to the output&lt;/li&gt;&lt;li&gt;The duration for sleeping sessions is now the sleep time, rather than the time since login&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v10.99&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CPU deltas can now use real-time thread-based metrics for more accurate data (use both @delta_interval and @get_task_info = 2) &lt;br&gt;&lt;/li&gt;&lt;li&gt;command_type information added to [additional_info] column for active requests&lt;br&gt;&lt;/li&gt;&lt;li&gt;Query plans that are not able to be rendered due to XML data type limitations will now be returned in an encapsulated text form&lt;br&gt;&lt;/li&gt;&lt;li&gt;Fixed bug where system processes were sometimes reporting start times in the future (thanks, Neil Hambly!)&lt;/li&gt;&lt;li&gt;Fixed bug where @get_locks sometimes failed with a constraint error (thanks, various reporters!)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v10.83&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Modified elapsed time logic to retrieve more accurate timing information for system SPIDs, in many cases&lt;br&gt;&lt;/li&gt;&lt;li&gt;Fixed bug where @get_task_info = 2 was adding an "N" before some waits&lt;/li&gt;&lt;li&gt;Fixed bug where tempdb_allocations was being incorrectly calculated for active requests&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v10.76&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;Enhancements&lt;/b&gt; &lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;SQL Agent job info&lt;/b&gt;
 (job name and step name) is now included in the additional_info column 
(use @get_additional_info = 1) (thanks, Argenis Fernandez!)&lt;br&gt;&lt;/li&gt;&lt;li&gt;If there is a lock wait, &lt;b&gt;information about the blocked object&lt;/b&gt; (name, 
schema name, and ID) is now included in the additional_info column (use 
both @get_additional_info = 1 and @get_task_info = 2)&lt;/li&gt;&lt;li&gt;Service Broker &lt;b&gt;activated tasks are now shown by default&lt;/b&gt;, without 
using @show_system_spids mode. The program_name column contains the 
queue_id&lt;/li&gt;&lt;li&gt;Various numeric columns, including reads, writes, cpu, 
etc, have been made nullable. These will occasionally return NULL, on 
extremely active systems where the DMVs return data more slowly than 
queries start and complete &lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;b&gt;Updates&lt;/b&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Removed workaround to handle MARS bug documented here: &lt;a href="http://connect.microsoft.com/SQLServer/feedback/details/490178/request-id-in-sys-dm-os-tasks-wrong-when-using-mars" target="_blank"&gt;http://connect.microsoft.com/SQLServer/feedback/details/490178/request-id-in-sys-dm-os-tasks-wrong-when-using-mars&lt;/a&gt; ... 
this was done in order to fix an issue where task information could not 
be populated in systems that had been up for some time (thanks, Michael 
Codanti!)&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Modified the way transaction data is collected; @get_transaction_info should now perform better than it previously did
&lt;/li&gt;&lt;li&gt;Modified central collection mechanism to read fewer rows from sysprocesses on each pass.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;b&gt;Bug Fixes&lt;/b&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;Removed get_original_login column from @get_additional_info option, 
in order to make the procedure once again fully compatibly with all 
versions of SQL Server 2005 and SQL Server 2008&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Fixed bug where @get_transaction_info would throw an exception when
 run on servers set to use a non-US English language (thanks, Tobias 
Ortmann!)&lt;br&gt;
&lt;/li&gt;&lt;li&gt;Fixed bug where @get_task_info = 0 erroneously collected blocking information&lt;/li&gt;&lt;li&gt;Fixed issue where on SQL Server instance start-up, SPIDs have a start_date of 1900-01-01 
until recovery is complete, which was causing an overflow exception (thanks, Michael Codanti and Allen White!)&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&lt;br&gt;
&lt;p&gt;Who is Active v9.98 (10.00 Release Candidate)&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Added new option, @get_additional_info&lt;/b&gt;:
 Returns a column called [additional_info] that contains various 
non-performance-related information sourced from the sessions and 
requests DMVs&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fixed @get_avg_time&lt;/b&gt;: This option had been broken for several versions. (thanks, Ola Hallengren)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Workspace memory greatly decreased&lt;/b&gt;:
 In some cases the proc would ask for a workspace memory grant of up to 
200MB. This was problematic in situations with a lot of concurrent 
activity. This version reduces the grant to under 4MB in the vast 
majority of cases.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;NOTE&lt;/b&gt;: The workspace memory fix is a
 tradeoff, and the opposite side of the coin is that the proc will now 
cause slightly more activity in tempdb. I need testers to compare the 
performance of v9.90 to v9.98. &lt;b&gt;Please &lt;/b&gt;give it a try and &lt;b&gt;let me know your results&lt;/b&gt; as soon as possible!&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active v9.90&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Discovered
 that due to inconsistent results from DMVs on servers under extreme 
load, the script will very rarely throw a unique key exception. Added 
IGNORE_DUP_KEY to the two main temp tables used in the script, in order 
to avoid this situation. (Thanks, Sankar Reddy and others)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active v9.89&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Fixed a bug where wait types were prefixed with an N in the wait_info column&lt;/li&gt;&lt;li&gt;Changed
 the filter for system SPIDs on sysprocesses to use the hostprocess 
column rather than hostname (thanks, Dan [last name unknown] and Erland 
Sommarskog)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who 
is Active v9.87&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;First stab at international database support&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Switched
 from VARCHAR to NVARCHAR almost everywhere appropriate&lt;/li&gt;&lt;li&gt;sql_text,
 sql_command, locks, login_name, wait_info, database_name, and 
other areas should all show the full set of available characters&lt;/li&gt;&lt;li&gt;Not
 currently supporting double-byte characters in the tran_log_writes 
column, due to issues with right-to-left languages causing SSMS to 
mangle the output&lt;/li&gt;&lt;li&gt;Use of characters in identifier names (e.g. 
database names, table names, etc) from unsupported character ranges per 
the W3C XML standard may cause Who is Active to throw a run-time 
exception. &lt;b&gt;This is something I need your help with.&lt;/b&gt; Are you using
 characters in your identifier names in the ranges 1-8, 11-12, 14-31, 
55296-57343, or 65534-65535? I suspect the answer is no; please let me 
know if I'm mistaken.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Changed the CREATE syntax at the top 
so that the stored procedure will not longer get dropped and re-created,
 thereby ensuring that existing permissions won't get overwritten when 
upgrading to a new version&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Please let me know if you're 
granting access to Who is Active using module signing, in which case I 
will attempt to make further modifications in this area&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who
 
is Active v9.72&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Removed reference to 
sys.dm_exec_query_memory_grants; now getting granted query memory info 
from sys.dm_exec_requests&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Who is Active is now compatible 
with all versions of SQL Server 2005 and SQL Server 2008&lt;br&gt;&lt;/li&gt;&lt;li&gt;Thanks
 for testing help, Mladen Prajdic&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who 
is Active v9.71&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Fixed a bug where session_id was being 
converted to TINYINT rather than SMALLINT (thanks, Linchi Shea)&lt;/li&gt;&lt;li&gt;Fixed

 a bug where self-blocking sessions in sysprocesses were incorrectly 
being shown (thanks, Jason Pease)&lt;/li&gt;&lt;li&gt;Fixed a bug where block 
leaders was causing a recursion overflow (thanks, Sankar Reddy)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who

 
is Active v9.68&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Fixed a bug where an internal UNIQUE 
constraint could occasionally be violated (session_id/kpid is not, as it
 turns out, truly unique in sysprocesses -- needed to add ecid to the 
key)&lt;/li&gt;&lt;li&gt;Fixed a bug where ignoring CXPACKET waits would cause other
 wait types to not bubble up in the default @get_task_info = 1 mode&lt;/li&gt;&lt;li&gt;Fixed

 a bug where PREEMPTIVE wait types were not showing properly in some 
cases, due to the task state being set as RUNNABLE rather than SUSPENDED
 in sys.dm_os_tasks&lt;/li&gt;&lt;li&gt;Now showing the actual latch type for 
LATCH_* waits&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who 
is Active v9.62 &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Further improved performance of the default 
"lightweight" wait collection mode (@get_task_info = 1).&lt;/li&gt;&lt;li&gt;Changed
 the name of the tempdb_writes column to tempdb_allocations (thanks 
Linchi Shea)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active v9.59&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Fixed
collation


 bug where some database names would cause an error to occur
due to special characters used as part of the script's processing work&lt;/li&gt;&lt;li&gt;Added


 log used kB information to the transaction_writes column&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who


 is Active v9.55&lt;br&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Massive re-work of the core queries, 
resulting in &lt;b&gt;greatly improved performance&lt;/b&gt; and more consistent 
results even in high-throughput environments&lt;br&gt;&lt;/li&gt;&lt;li&gt;Created a new&lt;b&gt;
 lightweight wait collection mode&lt;/b&gt;, used by default. This mode 
collects only the top non-CXPACKET wait, giving preference to blockers.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To


 see full wait and task info, use the new option @get_task_info = 2&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;New


 feature added that&lt;b&gt; shows all sessions blocking those included in the
 base filter criteria&lt;/b&gt;, whether or not they would normally be 
returned.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To
see the feature in action, create a new database and have a session use
it. Then fire up another session and try to drop the database. The
second session will be blocked, and by default previous versions of the
script would not have returned the blocking session because it is not
active, nor does it have an open session. Version 9.55 will return the
blocking session.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Release candidate for the next 
"official" version. &lt;b&gt;Please test!&lt;/b&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is 
Active v9.07 &lt;br&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Flipped the version to v9.0!&lt;/li&gt;&lt;li&gt;Added 
nodeId information when collecting CXPACKET waits&lt;/li&gt;&lt;li&gt;Made the help 
output even nicer&lt;/li&gt;&lt;li&gt;Added a new option, @show_system_spids&lt;b&gt; &lt;/b&gt;which,


 when set to 1, makes the tool show system SPIDs as well as user SPIDs&lt;/li&gt;&lt;li&gt;Changed


 @get_sleeping_spids to @show_sleeping_spids, in order to align with the
 naming used by the rest of the procedure&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Who


 is Active v8.99&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Added
additional workarounds for cases where sys.dm_exec_requests does not
output proper or meaningful statement offsets. The latest issues I've
identified occur when a query is calling a scalar UDF. The offsets and
the sql_handle are not updated in a single operation, so it is possible
to get strange results. I've added a couple of checks to try to avoid
this in most cases, but the issue will not actually be solved until the
SQL Server team fixes it in the engine.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Want it fixed? Vote 
here: &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=478601"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=478601&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who


 is Active? v8.96&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Dynamic sort ordering&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Removed 
@sort_column and @sort_column_direction parameters.&lt;/li&gt;&lt;li&gt;Replaced 
with @sort_order parameter, which accepts a list of columns and sort 
directions (completely injection-safe, of course)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;"Not" 
filters&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Added
new @not_filter and @not_filter_type parameters which behave the same
as the @filter and @filter_type but do the opposite. Great for when you
have service accounts, etc, that you don't want to see information about&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Improved


 the online help (@help=1) option&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Added a second table 
containing all of the output columns&lt;/li&gt;&lt;li&gt;Improved the layout of the 
first table&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active? v8.89&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&amp;nbsp;Removed


 reference to SQL Server 2008-specific DMV column (parent_task_address)&lt;br&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Tasks


 and requests are now related via kpid from sysprocesses&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who


 is Active? v8.88&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Added @get_sleeping_spids option&lt;/li&gt;&lt;ul&gt;&lt;li&gt;0
 gets no sleeping SPIDs (feature requested by Alvaro Mosquera)&lt;/li&gt;&lt;li&gt;1
 (default) gets sleeping SPIDs only if they are holding an open 
transaction&lt;/li&gt;&lt;li&gt;2 gets all sleeping SPIDs (feature requested by a 
few people over the past couple of months)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Added 
@format_output option 2, the "Aaron Bertrand" option (proper formatting 
for fixed-width fonts)&lt;br&gt;&lt;/li&gt;&lt;li&gt;Re-wrote the join condition to find 
tasks associated with requests--now using task_address rather than 
request_id&lt;/li&gt;&lt;li&gt;Fixed
a bug where MARS connections and other situations cause more rows in
the Connections DMV than I expected, which created a PK error on one of
the temp tables&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Many thanks to Michelle Ufford for reporting
 this bug!&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active? v8.81&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Flipped the @get_plans
options changed in v8.75 so that 1 now gets the plan based on the
current running statement (after I tested it a bit I found that mode to
be much more useful than the other mode when using stored procedures).
2 now gets the full plan.&lt;/li&gt;&lt;li&gt;Modified the timeout code for getting
plans and query text, to better handle other errors that might occur
(now sends back an error message instead)&lt;/li&gt;&lt;li&gt;Added a link to this 
downloads section so that you can more easily find new "Beta" builds!&lt;/li&gt;&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;Who


 is Active? v8.77&lt;/p&gt;
&lt;p&gt;Fixed two bugs:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Was
casting SUM(context_switches) and SUM(physical_io) for the session into
an INT, causing an overflow problem (thanks, Sankar Reddy!)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Note


 to self: [some int value] + [some int value] may be greater than [max 
int value]&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Was incorrectly dividing used memory KB by 
8192 instead of 8 to get the number of used pages&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who


 is Active? v8.75 &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Added a new suboption to @get_plans:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;As
before,


 an argument value of 0 will cause plans to not be fetched, and
a value of 1 will cause plans to be fetched based on the plan_handle
associated with the request.&lt;/li&gt;&lt;li&gt;The modification is that a value
of 2 willh cause the plans to be fetched based on both the plan_handle
and the statement offsets associated with the request. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Using
a


 value of 1--pulling the plan based only on the plan_handle--you may
see that the generated plan is the plan for the entire stored procedure
or batch currently running, and not just the statement that is
currently active. Using option 2 you may be able to get more targeted
plans, that will correspond directly to the statement you see in the
sql_text column.&lt;/p&gt;
I have not thoroughly tested this change. Please
give it a try and let me know if you see anything strange or
unexpected--in either a good way or a bad way. 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active?
 v8.74 &lt;br&gt;
&lt;/p&gt;
&lt;p&gt;Further tweaks to yesterday's RUNNABLE enhancement. Fixed a bug
where the number of active tasks was miscounted in some cases. Also
renamed the "threads" column to "tasks" to be more specific about what
it is really counting.&lt;br&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;Who is Active? v8.72&lt;br&gt;
&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Modified wait_info to show tasks on the runnable queue. These 
will show up with wait type "RUNNABLE"&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp; &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Who is 
Active? v8.71 &lt;br&gt;
&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;Added program_name to default output&lt;/li&gt;&lt;li&gt;Removed @spid 
parameter, replaced with flexible filter options&lt;/li&gt;&lt;ul&gt;&lt;li&gt;@filter_type


 - allows user to specify session, database, host, login, or program&lt;/li&gt;&lt;li&gt;@filter


 - The actual text to filter; supports wildcards&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;br&gt;

&lt;p&gt;Two minor bug fixes for v8.69:&lt;/p&gt;


&lt;ol&gt;&lt;li&gt;Would fail for sessions running with ANSI_PADDING or 
QUOTED_IDENTIFIERS turned off&lt;/li&gt;&lt;li&gt;Would very rarely fail due to an 
improperly formed join to sys.dm_exec_query_memory_grants&lt;/li&gt;&lt;/ol&gt;


&lt;p&gt;Both of these should be fixed in this version.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Who is Active? v8.67&lt;/p&gt;


&lt;p&gt;Online help: @help = 1&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;self-explanatory&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;


&lt;p&gt;Find block leaders: @find_block_leaders = 1 &lt;/p&gt;


&lt;ul&gt;&lt;li&gt;Returns
a column called "blocked_session_count" that is the result of a count,
starting from each blocker and walking down the entire blocking chain.&amp;nbsp;
Each blocker will have the count of all blocked sessions down the
chain, including those that are blocked by SPIDs the blocker is blocking&lt;/li&gt;&lt;/ul&gt;


&lt;p&gt;@output_column_list supports simple wildcards&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;% and _ are now allowed.&amp;nbsp; So you can do, e.g.: 
@output_column_list = '[tran%] [%]'&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Who is Active? v10.00</title><link>http://sqlblog.com/files/folders/release/entry29675.aspx</link><pubDate>Thu, 21 Oct 2010 21:00:03 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:29675</guid><dc:creator>adam machanic</dc:creator><description>&lt;p&gt;Who is Active? is a comprehensive server activity stored procedure 
based on the SQL Server 2005 and 2008 dynamic management views (DMVs). 
Think of it as sp_who2 on a hefty dose of anabolic steroids. Features 
supported by Who is Active? include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Server activity 
collection, including data about currently running T-SQL, server 
resources consumed by the request, and query plan collection&lt;/li&gt;&lt;li&gt;Real-time wait statistics collection and blocker reporting&lt;/li&gt;&lt;li&gt;Delta collection mode, in order to find out what processes are doing over time&lt;/li&gt;&lt;li&gt;A
 number of filter options to help you narrow down the scope of data 
returned, the order of rows, and the number and order of output columns&lt;/li&gt;&lt;li&gt;Ability to collect to a table, rather than sending the data back as a rowset&lt;/li&gt;&lt;li&gt;An online help system to help you figure out what options are available. Use the @help=1 option to hit the ground running.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;License:&lt;/p&gt;&lt;p&gt;Who
 is Active? is free to download and use for personal, educational, and 
internal corporate purposes, provided that the included comment header 
is preserved. Redistribution or sale of Who is Active?, in whole or in 
part, is prohibited without the author's express written consent. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Change log for the most recent several versions: &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v9.98 (10.00 Release Candidate)&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Added new option, @get_additional_info&lt;/b&gt;:
 Returns a column called [additional_info] that contains various 
non-performance-related information sourced from the sessions and 
requests DMVs&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fixed @get_avg_time&lt;/b&gt;: This option had been broken for several versions. (thanks, Ola Hallengren)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Workspace memory greatly decreased&lt;/b&gt;:
 In some cases the proc would ask for a workspace memory grant of up to 
200MB. This was problematic in situations with a lot of concurrent 
activity. This version reduces the grant to under 4MB in the vast 
majority of cases.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;NOTE&lt;/b&gt;: The workspace memory fix is a
 tradeoff, and the opposite side of the coin is that the proc will now 
cause slightly more activity in tempdb. I need testers to compare the 
performance of v9.90 to v9.98. &lt;b&gt;Please &lt;/b&gt;give it a try and &lt;b&gt;let me know your results&lt;/b&gt; as soon as possible!&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v9.90&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Discovered
 that due to inconsistent results from DMVs on servers under extreme 
load, the script will very rarely throw a unique key exception. Added 
IGNORE_DUP_KEY to the two main temp tables used in the script, in order 
to avoid this situation. (Thanks, Sankar Reddy and others)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v9.89&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fixed a bug where wait types were prefixed with an N in the wait_info column&lt;/li&gt;&lt;li&gt;Changed
 the filter for system SPIDs on sysprocesses to use the hostprocess 
column rather than hostname (thanks, Dan [last name unknown] and Erland 
Sommarskog)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who 
is Active v9.87&lt;/p&gt;&lt;ul&gt;&lt;li&gt;First stab at international database support&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Switched
 from VARCHAR to NVARCHAR almost everywhere appropriate&lt;/li&gt;&lt;li&gt;sql_text,
 sql_command, locks, login_name, wait_info, database_name, and 
other areas should all show the full set of available characters&lt;/li&gt;&lt;li&gt;Not
 currently supporting double-byte characters in the tran_log_writes 
column, due to issues with right-to-left languages causing SSMS to 
mangle the output&lt;/li&gt;&lt;li&gt;Use of characters in identifier names (e.g. 
database names, table names, etc) from unsupported character ranges per 
the W3C XML standard may cause Who is Active to throw a run-time 
exception. &lt;b&gt;This is something I need your help with.&lt;/b&gt; Are you using
 characters in your identifier names in the ranges 1-8, 11-12, 14-31, 
55296-57343, or 65534-65535? I suspect the answer is no; please let me 
know if I'm mistaken.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Changed the CREATE syntax at the top 
so that the stored procedure will not longer get dropped and re-created,
 thereby ensuring that existing permissions won't get overwritten when 
upgrading to a new version&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Please let me know if you're 
granting access to Who is Active using module signing, in which case I 
will attempt to make further modifications in this area&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who
 
is Active v9.72&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Removed reference to 
sys.dm_exec_query_memory_grants; now getting granted query memory info 
from sys.dm_exec_requests&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Who is Active is now compatible 
with all versions of SQL Server 2005 and SQL Server 2008&lt;br&gt;&lt;/li&gt;&lt;li&gt;Thanks

 for testing help, Mladen Prajdic&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who 
is Active v9.71&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fixed a bug where session_id was being 
converted to TINYINT rather than SMALLINT (thanks, Linchi Shea)&lt;/li&gt;&lt;li&gt;Fixed


 a bug where self-blocking sessions in sysprocesses were incorrectly 
being shown (thanks, Jason Pease)&lt;/li&gt;&lt;li&gt;Fixed a bug where block 
leaders was causing a recursion overflow (thanks, Sankar Reddy)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who


 
is Active v9.68&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fixed a bug where an internal UNIQUE 
constraint could occasionally be violated (session_id/kpid is not, as it
 turns out, truly unique in sysprocesses -- needed to add ecid to the 
key)&lt;/li&gt;&lt;li&gt;Fixed a bug where ignoring CXPACKET waits would cause other
 wait types to not bubble up in the default @get_task_info = 1 mode&lt;/li&gt;&lt;li&gt;Fixed



 a bug where PREEMPTIVE wait types were not showing properly in some 
cases, due to the task state being set as RUNNABLE rather than SUSPENDED
 in sys.dm_os_tasks&lt;/li&gt;&lt;li&gt;Now showing the actual latch type for 
LATCH_* waits&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who 
is Active v9.62 &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Further improved performance of the default 
"lightweight" wait collection mode (@get_task_info = 1).&lt;/li&gt;&lt;li&gt;Changed
 the name of the tempdb_writes column to tempdb_allocations (thanks 
Linchi Shea)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active v9.59&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Fixed
collation




 bug where some database names would cause an error to occur
due to special characters used as part of the script's processing work&lt;/li&gt;&lt;li&gt;Added




 log used kB information to the transaction_writes column&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who




 is Active v9.55&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Massive re-work of the core queries, 
resulting in &lt;b&gt;greatly improved performance&lt;/b&gt; and more consistent 
results even in high-throughput environments&lt;br&gt;&lt;/li&gt;&lt;li&gt;Created a new&lt;b&gt;
 lightweight wait collection mode&lt;/b&gt;, used by default. This mode 
collects only the top non-CXPACKET wait, giving preference to blockers.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To




 see full wait and task info, use the new option @get_task_info = 2&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;New




 feature added that&lt;b&gt; shows all sessions blocking those included in the
 base filter criteria&lt;/b&gt;, whether or not they would normally be 
returned.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;To
see the feature in action, create a new database and have a session use
it. Then fire up another session and try to drop the database. The
second session will be blocked, and by default previous versions of the
script would not have returned the blocking session because it is not
active, nor does it have an open session. Version 9.55 will return the
blocking session.&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Release candidate for the next 
"official" version. &lt;b&gt;Please test!&lt;/b&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is 
Active v9.07 &lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Flipped the version to v9.0!&lt;/li&gt;&lt;li&gt;Added 
nodeId information when collecting CXPACKET waits&lt;/li&gt;&lt;li&gt;Made the help 
output even nicer&lt;/li&gt;&lt;li&gt;Added a new option, @show_system_spids&lt;b&gt; &lt;/b&gt;which,




 when set to 1, makes the tool show system SPIDs as well as user SPIDs&lt;/li&gt;&lt;li&gt;Changed




 @get_sleeping_spids to @show_sleeping_spids, in order to align with the
 naming used by the rest of the procedure&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;&lt;p&gt;Who




 is Active v8.99&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added
additional workarounds for cases where sys.dm_exec_requests does not
output proper or meaningful statement offsets. The latest issues I've
identified occur when a query is calling a scalar UDF. The offsets and
the sql_handle are not updated in a single operation, so it is possible
to get strange results. I've added a couple of checks to try to avoid
this in most cases, but the issue will not actually be solved until the
SQL Server team fixes it in the engine.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Want it fixed? Vote 
here: &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=478601"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=478601&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who




 is Active? v8.96&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Dynamic sort ordering&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Removed 
@sort_column and @sort_column_direction parameters.&lt;/li&gt;&lt;li&gt;Replaced 
with @sort_order parameter, which accepts a list of columns and sort 
directions (completely injection-safe, of course)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;"Not" 
filters&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Added
new @not_filter and @not_filter_type parameters which behave the same
as the @filter and @filter_type but do the opposite. Great for when you
have service accounts, etc, that you don't want to see information about&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Improved




 the online help (@help=1) option&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Added a second table 
containing all of the output columns&lt;/li&gt;&lt;li&gt;Improved the layout of the 
first table&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active? v8.89&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Removed




 reference to SQL Server 2008-specific DMV column (parent_task_address)&lt;br&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Tasks




 and requests are now related via kpid from sysprocesses&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who




 is Active? v8.88&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Added @get_sleeping_spids option&lt;/li&gt;&lt;ul&gt;&lt;li&gt;0
 gets no sleeping SPIDs (feature requested by Alvaro Mosquera)&lt;/li&gt;&lt;li&gt;1
 (default) gets sleeping SPIDs only if they are holding an open 
transaction&lt;/li&gt;&lt;li&gt;2 gets all sleeping SPIDs (feature requested by a 
few people over the past couple of months)&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Added 
@format_output option 2, the "Aaron Bertrand" option (proper formatting 
for fixed-width fonts)&lt;br&gt;&lt;/li&gt;&lt;li&gt;Re-wrote the join condition to find 
tasks associated with requests--now using task_address rather than 
request_id&lt;/li&gt;&lt;li&gt;Fixed
a bug where MARS connections and other situations cause more rows in
the Connections DMV than I expected, which created a PK error on one of
the temp tables&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Many thanks to Michelle Ufford for reporting
 this bug!&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active? v8.81&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Flipped the @get_plans
options changed in v8.75 so that 1 now gets the plan based on the
current running statement (after I tested it a bit I found that mode to
be much more useful than the other mode when using stored procedures).
2 now gets the full plan.&lt;/li&gt;&lt;li&gt;Modified the timeout code for getting
plans and query text, to better handle other errors that might occur
(now sends back an error message instead)&lt;/li&gt;&lt;li&gt;Added a link to this 
downloads section so that you can more easily find new "Beta" builds!&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;p&gt;Who




 is Active? v8.77&lt;/p&gt;&lt;p&gt;Fixed two bugs:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Was
casting SUM(context_switches) and SUM(physical_io) for the session into
an INT, causing an overflow problem (thanks, Sankar Reddy!)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Note




 to self: [some int value] + [some int value] may be greater than [max 
int value]&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Was incorrectly dividing used memory KB by 
8192 instead of 8 to get the number of used pages&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who




 is Active? v8.75 &lt;br&gt;&lt;/p&gt;&lt;p&gt;Added a new suboption to @get_plans:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;As
before,




 an argument value of 0 will cause plans to not be fetched, and
a value of 1 will cause plans to be fetched based on the plan_handle
associated with the request.&lt;/li&gt;&lt;li&gt;The modification is that a value
of 2 willh cause the plans to be fetched based on both the plan_handle
and the statement offsets associated with the request. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Using
a




 value of 1--pulling the plan based only on the plan_handle--you may
see that the generated plan is the plan for the entire stored procedure
or batch currently running, and not just the statement that is
currently active. Using option 2 you may be able to get more targeted
plans, that will correspond directly to the statement you see in the
sql_text column.&lt;/p&gt;I have not thoroughly tested this change. Please
give it a try and let me know if you see anything strange or
unexpected--in either a good way or a bad way. &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active?
 v8.74 &lt;br&gt;
&lt;/p&gt;&lt;p&gt;Further tweaks to yesterday's RUNNABLE enhancement. Fixed a bug
where the number of active tasks was miscounted in some cases. Also
renamed the "threads" column to "tasks" to be more specific about what
it is really counting.&lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;p&gt;Who is Active? v8.72&lt;br&gt;
&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Modified wait_info to show tasks on the runnable queue. These 
will show up with wait type "RUNNABLE"&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp; &lt;br&gt;&lt;/p&gt;&lt;p&gt;Who is 
Active? v8.71 &lt;br&gt;
&lt;/p&gt;


&lt;ul&gt;&lt;li&gt;Added program_name to default output&lt;/li&gt;&lt;li&gt;Removed @spid 
parameter, replaced with flexible filter options&lt;/li&gt;&lt;ul&gt;&lt;li&gt;@filter_type




 - allows user to specify session, database, host, login, or program&lt;/li&gt;&lt;li&gt;@filter




 - The actual text to filter; supports wildcards&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br&gt;


&lt;p&gt;Two minor bug fixes for v8.69:&lt;/p&gt;


&lt;ol&gt;&lt;li&gt;Would fail for sessions running with ANSI_PADDING or 
QUOTED_IDENTIFIERS turned off&lt;/li&gt;&lt;li&gt;Would very rarely fail due to an 
improperly formed join to sys.dm_exec_query_memory_grants&lt;/li&gt;&lt;/ol&gt;


&lt;p&gt;Both of these should be fixed in this version.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Who is Active? v8.67&lt;/p&gt;



&lt;p&gt;Online help: @help = 1&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;self-explanatory&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;Find block leaders: @find_block_leaders = 1 &lt;/p&gt;



&lt;ul&gt;&lt;li&gt;Returns
a column called "blocked_session_count" that is the result of a count,
starting from each blocker and walking down the entire blocking chain.&amp;nbsp;
Each blocker will have the count of all blocked sessions down the
chain, including those that are blocked by SPIDs the blocker is blocking&lt;/li&gt;&lt;/ul&gt;



&lt;p&gt;@output_column_list supports simple wildcards&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;% and _ are now allowed.&amp;nbsp; So you can do, e.g.: 
@output_column_list = '[tran%] [%]'&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Who is Active? v10.00: DMV Monitoring Made Easy</title><link>http://sqlblog.com/blogs/adam_machanic/archive/2010/10/21/who-is-active-v10-00-dmv-monitoring-made-easy.aspx</link><pubDate>Thu, 21 Oct 2010 18:33:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:29677</guid><dc:creator>Adam Machanic</dc:creator><description>&lt;p&gt;Today I am happy to release the newest official build of my &lt;a href="http://tinyurl.com/WhoIsActive"&gt;Who is Active&lt;/a&gt; procedure: &lt;b&gt;v10.00&lt;/b&gt;. &lt;/p&gt;&lt;p&gt;For those of you who haven't been following along, here are some quick facts on Who is Active:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Who is Active is a DMV-based monitoring stored procedure that&lt;b&gt; uses 15 different views to show a large amount of data about what's running on your server&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Who is Active was designed to be &lt;b&gt;extremely flexible&lt;/b&gt;, and includes options to not only get different types of data, but also to change the output column list and sort order&lt;/li&gt;&lt;li&gt;Who is Active was &lt;b&gt;designed with performance in mind&lt;/b&gt; at every step; users report that under normal conditions response times are generally subsecond, with slightly longer response times on servers that are extremely taxed&lt;/li&gt;&lt;li&gt;Who is Active is&lt;b&gt; compatible with all versions of SQL Server after SQL Server 2005 RTM&lt;/b&gt;. It does require that the host database (generally master) is not set for SQL Server 2000 compatibility mode&lt;/li&gt;&lt;li&gt;Who is Active is&lt;b&gt; free for most users&lt;/b&gt;. Refer to the license at the top of the procedure for more information&lt;br&gt;&lt;/li&gt;&lt;li&gt;Who is Active has been a work in progress for over 3 years. My source control system contains over 600 revisions, and &lt;b&gt;version 10.00 is over 3900 lines long&lt;/b&gt; -- by far the biggest and most complex single stored procedure I have ever worked with.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://sqlblog.com/files/folders/29675/download.aspx"&gt;&lt;b&gt;Click Here to Download Who is Active version 10.00&lt;/b&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;A bit more information, for those who are interested:&lt;/p&gt;&lt;p&gt;Most of the changes since the last stable build (&lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/2009/12/03/who-is-active-v9-57-fast-comprehensive-dmv-collection.aspx"&gt;v9.57&lt;/a&gt;) have been bug fixes, and I would like to thank the many people who've sent me feedback over the past 10 months. As a result of fixing the various issues I am happy to say that this new version is quite solid, returning data even when the underlying DMVs aren't doing their jobs as advertised.&lt;br&gt;&lt;/p&gt;&lt;p&gt;The most major enhancement is much better support for international character sets. When I first wrote the procedure I used VARCHAR for everything because, let's face it, I'm American and we know in our hearts that no one else in the world has any other language aside from that which we use. Well, luckily I was slapped into reality by a few users in far away lands such as Isreal and Sweden, and this version fully supports international character sets for everything except one feature where I couldn't get right-to-left encodings working properly. Stay tuned for a minor update to fix that discrepancy. &lt;/p&gt;&lt;p&gt;I also added a few features along the way:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The name of the actual latch is shown when displaying a latch wait, not just the name of the wait (LATCH_EX, etc)&lt;/li&gt;&lt;li&gt;The transaction_writes column shows both the number of writes and the actual amount of log space consumed, in kB&lt;/li&gt;&lt;li&gt;An option called @get_additional_info was added. This option lets you collect information about the running session or request including connection settings like ANSI_NULLS, DATEFIRST, etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I still need to fully document this thing, and it's a goal I hope to achieve before the end of the year. Bear with me, please. And in the meantime, feel free to ask me any questions either here or on Twitter.&lt;/p&gt;&lt;p&gt;Enjoy! And thanks again to everyone who has sent me feedback along the way. This would not be possible without you. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;... &lt;br&gt;&lt;/p&gt;&lt;p&gt;A few terms for the search engines:&lt;/p&gt;&lt;p&gt;sp_whoisactive whoisactive sp_who sp_who2 sp_who3 sp_who4 sp_who5 &lt;br&gt;&lt;/p&gt;</description></item><item><title>SSMS : Which parts do you love? Which parts do you hate?</title><link>http://sqlblog.com/blogs/aaron_bertrand/archive/2010/06/22/ssms-which-parts-do-you-love-which-parts-fo-you-hate.aspx</link><pubDate>Wed, 23 Jun 2010 00:56:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:26377</guid><dc:creator>AaronBertrand</dc:creator><description>&lt;p&gt;I find myself categorizing a subset of SSMS features ranging from "must have" features to "cringe when they are mentioned."&amp;nbsp; I'll try to summarize the standouts for you here, then ask you these questions: Which parts of SSMS do you rely on? Which do you wish were not there at all?&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;The "I almost always use it to get the task done." variety&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SQL Server Agent's Job / Job Step Editor.&amp;nbsp; While not pretty, the wizard does make quick work of creating jobs with several steps, multiple schedules, and various execution paths.&amp;nbsp; (Let's just pretend the 2008 R2 version isn't a no-op &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/557402/ssms-can-no-longer-create-or-edit-job-steps" title="https://connect.microsoft.com/SQLServer/feedback/details/557402/ssms-can-no-longer-create-or-edit-job-steps" target="_blank"&gt;due to a debilitating bug&lt;/a&gt;.)&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Profiler.&amp;nbsp; Similar to the job procedures, I am unlikely to ever get the hang of scripting a server-side trace from memory.&amp;nbsp; So, I use the profiler UI to set up the trace details, then save the script for future use.&amp;nbsp; If I have to run a slightly different server-side trace, I can use the same script with minimal changes; but in many cases it is just as quick to use the UI again and start from scratch.&amp;nbsp; (Technically, I guess this isn't part of SSMS, but it is certainly a management UI that has had its share of criticism over the years.)&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Right-click object &amp;gt; Modify, or Script as ALTER to New Window.&amp;nbsp; This is by far the quickest way for me to get at the *current* version that is deployed, and when I am done testing my revisions against the dev server, I can then move the changes to source control.&amp;nbsp; I see a lot of people using sp_helptext or manually selecting from syscomments / sys.sql_modules / OBJECT_DEFINITION(), but this can involve several more steps to get the code into suitable (and more importantly, maintainable) shape.&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Registered servers.&amp;nbsp; These are a god-send, especially since I've learned to export carefully constructed nodes and share them across all machines.&amp;nbsp; I wish the tool in general was more consistent at remembering passwords depending on how I've initiated or switch a connection, but that's another story I suppose.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;The "I will use it if I have to, but usually feel icky and prefer better alternatives." variety&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Table Designer - occasionally I will use this tool (right-click a table, Design), but only at the beginning of projects, where I want to slightly adjust the column order in a new table.&amp;nbsp; Even in that case, more often than not, I'll drop and re-create the table.&amp;nbsp; For tables already in use, I always use DDL commands like ALTER TABLE, knowing that any new columns end up at the end of the table.&amp;nbsp; And that's okay with me.&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;/li&gt;&lt;li&gt;SQL Server Agent &amp;gt; Job History.&amp;nbsp; This dialog has some real quirkiness; in our environment, it is always confused because it is being run on a desktop in one time zone against servers in another.&amp;nbsp; I have been complaining about this since before SQL Server 2005 was released (though first officially documented in 2006; see &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/124841/very-odd-duration-listed-in-log-file-viewer" title="https://connect.microsoft.com/SQLServer/feedback/details/124841/very-odd-duration-listed-in-log-file-viewer" target="_blank"&gt;Connect #124841&lt;/a&gt;).&amp;nbsp; I also find the interface cumbersome to use and drill down - usually I get more complete and consumable information, and more immediately, from &lt;a href="http://www.sqlsentry.net/event-manager/sql-server-enterprise-overview.asp" title="http://www.sqlsentry.net/event-manager/sql-server-enterprise-overview.asp" target="_blank"&gt;SQL Sentry's Event Manager&lt;/a&gt; - which also has the ability to store more history in the repository without bogging down production instances of msdb.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Select Top N Rows.&amp;nbsp; This is a quick way to grab an arbitrary 1000 rows (or whatever number you customize) from a table.&amp;nbsp; Sadly, it just blindly executes the query without giving you the opportunity to modify the column list, where clause or isolation level (personally, I prefer Script &amp;gt; As SELECT To &amp;gt; New Query Editor Window).&amp;nbsp; Oh, and it won't necessarily put you in the context of the right database; instead, it uses a three-part name for the table, which can be frustrating if you try to add a simple join or subquery and forget which database you're really in.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;The "I will not touch it with a 10-foot pole"! variety:&lt;/b&gt;&lt;ul&gt;&lt;li&gt;Activity Monitor.&amp;nbsp; While this replacement of the useless view of the same name in previous iterations of the tool shows a lot of potential, and its 
motivation is in the right spot, it is in its infancy and has a lot of quirky behaviors.&amp;nbsp; If I want a good
 look at what is going on in my server, I will use &lt;a href="http://www.sqlsentry.net/performance-advisor/sql-server-performance-overview.asp" title="http://www.sqlsentry.net/performance-advisor/sql-server-performance-overview.asp" target="_blank"&gt;SQL
 Sentry's Performance Advisor&lt;/a&gt; - which does a great job of warning me about issues even when I'm not paying attention.&amp;nbsp; For a really quick pulse of current 
activity or in environments where I haven't convinced them to use 
Performance Advisor, then I turn to Adam Machanic's &lt;a href="http://sqlblog.com/files/folders/beta/entry26196.aspx" title="http://sqlblog.com/files/folders/beta/entry26196.aspx" target="_blank"&gt;sp_whoIsActive&lt;/a&gt;.&amp;nbsp; For a really quick look, yes, Activity Monitor can be useful... but for very little incremental effort you can get to a lot more information without memorizing all of the DMVs.&lt;br&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;This will be ridiculously shocking, but any of the features that allow you to shrink a database or a file.&amp;nbsp; I acknowledge that there are some cases where shrinking a file is necessary, and I don't want to get into a religious battle about it.&amp;nbsp; I just wish that the task was much more difficult and thought-provoking to complete.&amp;nbsp; Rather than one button or checkbox, imagine if the process to shrink a file were as convoluted as setting up SQL Server?&amp;nbsp; There is one case where I'd applaud a longer and more cumbersome set of steps to accomplish a simple task.&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;/li&gt;&lt;li&gt;Most other designers / wizards.&amp;nbsp; Including, but not limited to:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;ol&gt;&lt;li&gt;View Designer&lt;/li&gt;&lt;li&gt;Query Designer&lt;/li&gt;&lt;li&gt;Edit Top N Rows (formerly &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/264592/ssms-deprecate-open-table" title="https://connect.microsoft.com/SQLServer/feedback/details/264592/ssms-deprecate-open-table" target="_blank"&gt;Open Table&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;New/Edit Database&lt;/li&gt;&lt;li&gt;New/Edit Login&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Go ahead, search Connect.&amp;nbsp; There are dozens of bugs against these dialogs, and few if any will ever be fixed.&amp;nbsp; I can quote myself on twitter from earlier tonight: "Never send a UI to do a DDL's job."&amp;nbsp; As I've explained above, this isn't always true; but in most cases the DDL is going to be more predictable and also infinitely more repeatable.&lt;/blockquote&gt;&lt;p&gt;&lt;br&gt;&lt;b&gt;The "Wait, why isn't that feature there?" variety&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I'm cheating here a little bit, but there are some noticeable omissions from Management Studio that I can't even complain about because they never bothered to create them.&amp;nbsp; UIs to support features that are cumbersome to set up using code alone, such as Service Broker and Extended Events (they are gradually getting to others such as Mirroring and of course the new DACPAC stuff).&amp;nbsp; Or things that are long overdue but are otherwise covered by great 3rd party add-ins, like Mladen Prajdic's &lt;a href="http://www.ssmstoolspack.com/" title="http://www.ssmstoolspack.com/" target="_blank"&gt;SSMS Tools Pack&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;b&gt;The "Oh yeah, I didn't even think of that one!" variety&lt;br&gt;&lt;/b&gt;&lt;br&gt;It is a pretty vast application and there are probably several features I didn't even think to mention.&amp;nbsp; So again, I'll ask: which parts of SSMS can you not live without?&amp;nbsp; Which ones would you throw off a pier if you were in control?&lt;br&gt;&lt;/p&gt;</description></item></channel></rss>