THE SQL Server Blog Spot on the Web

Welcome to SQLblog.com - The SQL Server blog spot on the web Sign in | Join | Help
in Search

Aaron Bertrand

Aaron is a senior consultant for SQL Sentry, Inc., makers of performance monitoring and event management software for SQL Server, Analysis Services, and Windows. He has been blogging here at sqlblog.com since 2006, focusing on manageability, performance, and new features; has been a Microsoft MVP since 1997; tweets as @AaronBertrand; and speaks frequently at user group meetings and SQL Saturday events.

Installing Service Packs / Cumulative Updates on a SQL 2005 cluster

In our environment, we run the task scheduler as a cluster resource, so that scheduled tasks always run on the active node.  (In ancient history, we would have scheduled tasks that weren't cluster aware - in the event of a failover, we'd have to manually disable task scheduler on the now passive node, and manually enable it on the active node.)

Unfortunately, when you run in this mode, the service pack or hotfix can't patch both nodes, because the patching of the passive node is achieved by remotely creating a scheduled task.  When it tries to create the task on the passive node(s), the log records this error:

Task Scheduler: Error, cannot create new scheduled task for product instance target \\<PSVNodeName>
Task Scheduler: Error, cannot create scheduled task for product instance target \\<PSVNodeName>
Task Scheduler: Removed remote folder for product instance target \\<PSVNodeName>
Error, remote process failed for product instance target
Exit code for passive node: <PSVNodeName> = 1603
The following exception occurred: No passive nodes were successfully patched 
  Date: <date/time>
  File: \depot\sqlvault\stable\setupmainl1\setup\sqlse\sqlsedll\instance.cpp  Line: 3510

The workaround Grasshopper posted in this SQLServerCentral thread might work, but it seems like a lot of hassle to me.

What I did to get around the problem was as follows (and I'll use a 2-node, single instance cluster as the example):

  1. establish remote desktop sessions on the individual nodes (not through the cluster) 
  2. in Cluster Administrator on the active node (say, node1), pause the passive node (say, node2)
  3. install the hotfix on node1
  4. un-pause node2
  5. failover to node2 (since you can't install a patch from a passive node)
  6. reboot node1
  7. from node2, wait for node1 to come back online, and then pause node1
  8. install the hotfix on node2
  9. un-pause node1
  10. reboot node2, failing back over to node1 
[Yes, this requires two brief outages, so you should do this during a maintenance window.]

So, is this more or less hassle than Grasshopper's solution?  I think the answer is very subjective.  His also requires restarting nodes, so the service downtime during failover is unavoidable at least with these two approaches.  I am just offering an alternative "solution" so you can pick your own poison.
Published Friday, November 20, 2009 7:56 AM by AaronBertrand

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

uberVU - social comments said:

This post was mentioned on Twitter by aaronbertrand: [Blog] : Installing service packs / cumulative updates on a SQL 2005 cluster, when scheduled tasks are cluster-aware : http://is.gd/4ZyZX

November 21, 2009 10:49 AM
 

Puran said:

This worked perfectly. Thanks for the fix. Who would have thunk abt pausing a node. :-)

May 13, 2011 12:30 PM
 

rajahmundry said:

This works for me on SQL Server 2008 R2 CU1 on cluster environment. Thank you.

June 7, 2011 9:31 PM

Leave a Comment

(required) 
(optional)
(required) 
Submit

About AaronBertrand

...about me...

This Blog

Syndication

Powered by Community Server (Commercial Edition), by Telligent Systems
  Privacy Statement