Posts Tagged ‘automation’

The Presentations Won’t Be Posted Until After the PASS Summit

2009-10-31

I’ve decided that the posting of my presentation materials (PowerPoint slide decks and sample code) will have to wait until I return from the 2009 PASS Community Summit. I apologize again for the delay.

As I mentioned previously, I’ve been adding to and improving the demonstrations for the SQLDiag presentation. I was satisfied with the code (in terms of functionality, it still needed polishing and testing) until last week, when I got an escalation call about end-user complaints of poor performance with a customer’s application. This type of case calls for the techniques covered in my presentation. I then realized that October has been a bit of a dry spell in terms of complex issues that merited these techniques.

I ended up seeing a number of opportunities to further automate the process, pleased with the dual benefit of 1.) helping to solve the issue for the customer and 2.) having more to share with my audiences. For example, I finally created a PowerShell script that automatically extracts a single SQLDiag data set from a 7-Zip archive and loads it into PAL and SQL Nexus. This saves an immense amount of time! The downside is that I added a significant set of new scripts that have to be refined and tested (but they are absolutely worth it!).

I have been putting the release of the presentation materials above many other tasks (including blogging, participating on forums, and many responsibilities in my personal life), which has really added to my stress level. It’s time to reprioritize… I need to enjoy some down-time with my wife, tie up a few loose ends at work, and prepare for the PASS conference. I’m sorry to postpone further, but on the other hand, the quality and quantity of deliverables will be much greater this way. I’m sure that you’ll find it worth the wait!

Expect the presentation materials the week of November 9th.

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;

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.

My PowerShell Script Won A Contest!

2009-04-30

Yesterday, I attended a Live Meeting for the PASS Database Administration Special Interest Group, presented by Buck Woody. The topic was on using PowerShell with SQL Server. Given that these are two of my favorite technologies, I decided to participate.

Since it was an introduction to PowerShell, the information was a bit below my skill level. However, I did glean a few gems of knowledge. Most of all, I found Buck’s presentation style very appealing. Now I’m really going to have to listen to episode 41 of SQL Down Under.

Anyway, at the end of the presentation, Buck announced that, courtesy of SQL Server MVP Rick Heiges, a Microsoft Thrive card would be awarded to the person that sent Buck the best PowerShell/SQL Server script.

I wrote a utility for myself back in January. Sometimes when I get an escalation call, the front-line support personnel simply jump in with “I received an alert with error ___.” Very few error codes are committed to my memory, so this doesn’t provide much information to me. My utility simply looks up the error message in the [master].[sys].[messages] table and then presents it in a web page.

I’ve been planning to publish the script utility on this blog for a little while, but just haven’t gotten around to it. It’s simple, but pretty useful.

I decided to submit it for Buck’s contest, and (amazingly) I won! Woohoo! Check out the announcement on Buck’s blog: And the Winner is – Get SQL Server Error Messages from PowerShell.

When I redeemed the Microsoft Thrive, I received a voucher for a free certification exam. I need to update my certifications, so this is very serendipitous. The bigger deal, though, is the recognition.