sp_server_diagnostics på SQL Server 2008 ?

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Installerade nyligen en ny SQL Server instans i ett befintligt kluster. Sedan tidigare fanns där en SQL2012 instans installerad och jag skulle nu lägga till en ny instans med SQL2008.

När jag installerat klart ville jag såklart testa en failover för att se så att allt var ok. Detta gick dock inte alls. SQL Server tjänsten ville inte gå upp på den andra noden och efter ett tags betänketid hoppade SQL instansen tillbaka till den ursprungliga noden.

En snabb titt i cluster loggen visade följande:

0000097c.00001354::2013/09/02-07:42:44.895 WARN  [RCM] rcm::RcmApi::MoveGroup: forwarded, no retry on error
5908 00000f6c.00001224::2013/09/02-07:42:49.257 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Connect to SQL Server …
00000f6c.00001224::2013/09/02-07:42:49.270 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] The connection was established successfully
00000f6c.00001224::2013/09/02-07:42:49.270 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Run ‘EXEC sp_server_diagnostics 20’ returns following information
00000f6c.00001224::2013/09/02-07:42:49.270 ERR   [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] ODBC Error: [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Could not find stored procedure ‘sp_server_diagnostics’. (2812) 00000f6c.00001224::2013/09/02-07:42:49.270 ERR   [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Failed to run diagnostics command. See previous log for error message
00000f6c.00001224::2013/09/02-07:42:49.270 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Disconnect from SQL Server
00000f6c.00001224::2013/09/02-07:42:54.272 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Connect to SQL Server …
00000f6c.00001224::2013/09/02-07:42:54.285 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] The connection was established successfully
00000f6c.00001224::2013/09/02-07:42:54.285 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Run ‘EXEC sp_server_diagnostics 20’ returns following information
00000f6c.00001224::2013/09/02-07:42:54.285 ERR   [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] ODBC Error: [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Could not find stored procedure ‘sp_server_diagnostics’. (2812) 00000f6c.00001224::2013/09/02-07:42:54.286 ERR   [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Failed to run diagnostics command. See previous log for error message
00000f6c.00001224::2013/09/02-07:42:54.286 INFO  [RES] SQL Server <SQL Server (XXXXXX)>: [sqsrvres] Disconnect from SQL Server
0000097c.00001354::2013/09/02-07:42:54.910 INFO  [RCM] rcm::RcmApi::MoveGroup: (SQL Server (XXXXXX), 2)

Vi kan här se att den försöker köra “sp_server_diagnostics”, vilket är en procedur som introducerades i SQL2012 och som (förenklat) levererar information om hälsostatus för SQL Server instansen. Eftersom jag installerade en 2008 instans är det inte konstigt att den inte kan hitta proceduren eftersom den helt enkelt inte finns i SQL Server 2008. Det normala när det gäller versioner före 2012 är att köra LooksAlive och IsAlive för att kontrollera status.

Då det redan fanns en SQL Server 2012 instans i klustret började jag misstänka att det blivit någon mismatch i klustret mellan versionerna av SQL Server. Efter en stunds betänketid beslöt jag mig för att helt enkelt prova en omstart av den sist installerade noden. Som så många gånger förut så gjorde denna enkla men ack så effektiva problemlösare susen!

Så man skall aldrig förkasta enkla lösningar, på till synes, svåra problem 🙂