Archive for July, 2009

Speaking at SQLSaturday #17

2009-07-31

I am currently in-transit (or was when I wrote this) to Baton Rouge, Louisiana for SQLSaturday #17. As described so many other places, SQLSaturday events are free, one-day mini-conferences that provide SQL Server training to the local development and IT community.

After having learned about the SQLSaturday concept a year or two ago, I’ve wanted to attend one. Unfortunately, there haven’t been any in Texas*, despite our thriving SQL Server community.

This probably seems obvious, but it never occurred to me to travel to one. It wasn’t until I heard that Tim Mitchell (blog, Twitter), a friend from our user group, was doing just that, presenting to (at least) two SQLSaturday events in Florida recently. What a great idea&em;SQLSaturday is certainly worth some traveling! My wife agreed, and we began budgeting for such a trip.

Tim let me know that he was presenting at SQLSaturday #17 and invited me along. I decided to join him, based largely on the following reasons: my long-standing desire to attend a SQLSaturday, my goal to practice delivering technical presentations as much as possible before my PASS Summit session, and the change to observe the organizing/running of a SQLSaturday (to serve as a model for our own*). I submitted an abstract to the call for speakers and delighted that it was accepted. I will be delivering my Deadlocks: Detection, Troubleshooting, and Prevention presentation that I’ve already given to both local user groups. The presentation details were truncated by the SQLSaturday web site, so I’ll post the complete details here:

Session Name: Deadlocks: Detection, Troubleshooting, and Prevention
Track: Infrastructure
Description: As an enterprise application grows and load increases, some concurrency issues are bound to surface. Deadlocks are one of the more aggravating of this class of problems. Fortunately, each release of SQL Server includes better tools for troubleshooting deadlocks.
Trevor will demonstrate approaches for handling deadlocks in SQL Server 2000, 2005, and 2008.

I’m really looking forward to it! I’m sharing a rental car and hotel with Time, so I’m glad that I’ll get the chance to know him better too.

If all goes well, I’ll try to attend SQLSaturday #21 or #25 in October, presenting my Leveraging PSSDiag/SQLDiag for Efficient Troubleshooting topic. Stuart Ainsworth (blog, Twitter) is courting me for SQLSaturday #25, so that one is in the lead right now. Another friend from NTSSUG, Tim Costello (blog, Twitter) is also planning to attend SQLSaturday #25, so that is an additional reason to go.

* I’m part of a team (the NTSSUG board plus Tim Mitchell) working on bringing the SQLSaturday experience to North Texas. We had a great conference call with Andy Warren (blog, Twitter), a founder of SQLSaturday, and plans are starting to come together. More details will follow in the coming weeks.

Using PowerShell to Determine the Windows Installer Version

2009-07-08

I’m going to attempt a short post…

Sometimes it’s necessary to determine the version of Windows Installer present on a system. The installation package for new products may be designed to use a feature added to a specific version of Windows Installer. It can be helpful to know whether you need to upgrade Windows Installer before attempting deployment of the new product.

According to the Windows Installer Team, the best way to determine the version of Windows Installer is to examine the version of the “MSI.dll” file. The following PowerShell command lines do this.

NOTE: Sometimes I choose to issue individual PowerShell command lines rather than running a script. I’ll explain this later, but even for very long command lines, they can be pasted into the command window without any problems. It doesn’t matter if they wrap. Also, you can paste several lines at once.

The command lines are:

$OriginalErrorActionPreference = $ErrorActionPreference;

$ErrorActionPreference = 'SilentlyContinue';

Get-ChildItem -Path 'C:\Windows\Sys*[36][24]\' -Include ('MSI.dll', 'MSIExec.exe') -Recurse | Sort-Object -Property DirectoryName, Name | Select-Object -Property DirectoryName, Name, @{Name='FileSize';Expression={'{0:N0}' -f $_.Length}}, @{Name='LastWriteTime';Expression={$_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss')}}, @{Name='Version';Expression={[System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion;}} | Format-List;

$ErrorActionPreference = $OriginalErrorActionPreference;

The Best Thing I Learned at a PASS Summit

2009-07-01

Just before the contest deadline, I want to share The Best Thing I Learned at a PASS Summit:

The PASS Community Summit 2008 was the first conference that I’ve had the pleasure of attending. I was so determined to go that I paid my own way (with a nice discount for volunteering on the board of an official PASS chapter). It was well worth the investment!

My biggest takeaway was: don’t underestimate your own expertise and don’t overestimate the depth of a session. I selected sessions to attend before the Summit began, choosing topics most relevant to my (new) role at Terremark. I was disappointed after the first day… I really hadn’t learned anything new. I decided to attend sessions that were: advanced (400 and 500 level), covering topics new to me, or from speakers whose work (blogs, books, forum posts, podcasts/webcasts, etc.) had helped me in the past. This made all the difference. My favorite session was about Extended Events, a topic I had originally ruled out because the feature is limited to SQL Server 2008 (which hadn’t been deployed by any of our customers yet).

Remember, sessions are only 75 to 90 minutes long, including question-and-answer time. One can’t delve very deeply into a topic in that short amount of time, especially for novice and intermediate level sessions. If you have a good amount of experience with a given product feature or skill set, you’ll probably learn more in a session on a different topic.

Speaking at the PASS Community Summit 2009

2009-07-01

One of my abstracts was selected for the PASS Community Summit 2009! It is an immense honor to get to speak at the conference, and it’s humbling to see my name listed amongst those of so many renowned SQL Server experts! According to Andy Warren (blog, Twitter), a member of the PASS Board of Directors, I am one of thirteen speakers who will be presenting at a PASS Summit for the first time.

I want to thank two friends and mentors who helped me to secure this opportunity, Peter DeBetta (blog, Twitter) and Jason Massie (blog, Twitter). Both are SQL Server MVPs that I met through the North Texas SQL Server Users Group. Each has presented at previous PASS conferences and sat on committees to select conference speakers (Peter for DevTeach/SQLTeach and Jason for the PASS Summit). Their advice has helped me get into speaking at the local user groups, position my abstracts for selection, and simply grow as a SQL Server professional!

Here are the details on my session:

Session Name: Leveraging PSSDiag/SQLDiag for Efficient Troubleshooting
Track: Enterprise Database Administration and Deployment
Description: Over the years, Microsoft Customer Service and Support has developed a number of amazing tools for troubleshooting SQL Server. Thankfully many of these tools have been shared with the public. In this session I will demonstrate the configuration and usage of PSSDiag (for SQL Server 2000) and SQLDiag (for SQL Server 2005 and 2008), which collect valuable diagnostic data. We will then analyze the data using RML Utilities as well as a few scripts of my own. Come and see how these tools can save you massive amounts of troubleshooting time!
Prerequisites: A basic understanding of SQL Server diagnostic data (such as traces, server metadata, and performance counters)
Session Goals:
  1. Familiarity with the setup and usage of the PSSDiag and SQLDiag utilities
  2. Familiarity with analyzing diagnostic data with the RML Utilities
  3. The ability to use PSSDiag/SQLDiag data to diagnose problems

I’ll post information on this blog as I refine the presentation and its demonstrations over the next few months.