Jeg hadde en situasjon på en server det Other Alerts viste Not Available i Windows SBS Console Home. Rutinemessig sjekket jeg The Official SBS Blog for eventuelle kjente feil og fant en beskrivelse der. Jeg undersøkte så min server og fant at situasjonen var lik som beskrevet, og besluttet å følge den prosedyren de beskrev her.
Den løsningen de presenterte var å kjøre noen SQL kommandoer som de hadde lagt ut for nedlastning her. Den filen undersøkte jeg og fant følgende SQL Server kommandoer i filen:
Innholdet i updateSBSMonitoring.sql:
USE SBSMonitoring
UPDATE [SBSMonitoring].[dbo].[Settings] SET [Value] = 30 WHERE [Name] = 'CleanupPeriod'
EXECUTE [SBSMonitoring].[dbo].[CleanupDatabase]
CREATE NONCLUSTERED INDEX [_SBS_BLOG_index_WMICollectedData_5_K4_K1_K5_2] ON [dbo].[WMICollectedData] ([WMIPropertyID] ASC,[ID] ASC, [WMIInstanceID] ASC) INCLUDE ( [DateCollected]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [_SBS_BLOG_index_Reports_5_K2_K3_1_4] ON [dbo].[Reports] ([ConfigurationID] ASC, [DateGenerated] ASC) INCLUDE ([ID], [Data]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
CREATE NONCLUSTERED INDEX [_SBS_BLOG_index_WMICollectedData_5_K2D_K4_K5] ON [dbo].[WMICollectedData] ([DateCollected] DESC, [WMIPropertyID] ASC, [WMIInstanceID] ASC) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
CREATE INDEX [_SBS_BLOG_index_Alerts_8_7_] ON [SBSMonitoring].[dbo].[Alerts] ([DefinitionID], [ComputerID]) INCLUDE ([DateOccured])
CREATE STATISTICS [_SBS_BLOG_stat_WMICollectedData_5_1_4] ON [dbo].[WMICollectedData]([WMIInstanceID], [ID], [WMIPropertyID])
CREATE STATISTICS [_SBS_BLOG_dta_stat_WMICollectedData_4_1_5_2_3] ON [dbo].[WMICollectedData]([WMIPropertyID], [ID], [WMIInstanceID], [DateCollected], [StatusID])
CREATE STATISTICS [_SBS_BLOG_dta_stat_WMICollectedData_5_1_3_4] ON [dbo].[WMICollectedData]([WMIInstanceID], [ID], [StatusID], [WMIPropertyID])
CREATE STATISTICS [_SBS_BLOG_dta_stat_WMICollectedData_5_4_2] ON [dbo].[WMICollectedData]([WMIInstanceID], [WMIPropertyID], [DateCollected])
CREATE STATISTICS [_SBS_BLOG_stat_WMICollectedData_2_1_5] ON [dbo].[WMICollectedData]([DateCollected], [ID], [WMIInstanceID])
CREATE STATISTICS [_SBS_BLOG_stat_WMICollectedData_1_3_5_2] ON [dbo].[WMICollectedData]([ID], [StatusID], [WMIInstanceID], [DateCollected])
I det følgende beskrives hva jeg gjorde for å fise feilen.
Figur 1 – I Windows SBS Console har jeg den situasjonen at Other Alerts viser Not Available, jfr. pilen i figuren.
Figur 2 – For å sjekke loggfilen for Windows SBS Console går jeg til loggfilen i katalogen C:\Program Files\Windows Small Business Server\Logs og finner filen console.log.
Figur 3 – Jeg åpner filen i NotePad, og navigerer til enden. Der finner jeg understående utdrag av loggen. Leg merke til Timeout expired.
Fra loggfilen:
---------------------------------------
An exception of type 'Type: System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has occurred.
Timestamp: 01/21/2010 20:12:18
Message: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Stack: at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteScalar()
at Microsoft.WindowsServerSolutions.SystemHealth.Monitoring.MonitoringSQLDataStore.GetAlertCountPerType(ComputerType type)
Figur 4 – For å stoppe SQL Server instangsen for SBS Monitoring, starter jeg Services.
Figur 5 – Jeg navigerer til tjenesten SQL Server (SBSMONITORING), høyreklikker denne og velger Stop.
Figur 6 – Så navigerer jeg til katalogen C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data. Der lager jeg en ny katalog med navnet Backup, og kopierer innholdet i overstående mappe inn i den nye Backup katalogen.
Tips
Hvis du benytter DPM 2007 server for å beskytte denne instansen kan du vurdere å la vær å ta backup. Jeg kopierte ikke DPM_SQL_PROTECT katalogen.
Figur 7 – Lager en kopi av innholdet i katalogen til en Backup katalog.
Figur 8 – Etter å ha tatt en backup av katalogen, starter jeg tjenesten SQL Server SBSMONITORING).
Figur 9 – Fra The Official SBS Blog har jeg lastet ned en SQL server kommandofil, og lagt den på C disken for å få en kort path. Husk å høyreklikk filen å Unblock denne.
Figur 10 – Åpner så et cmd vindu med Run as administrator.
Figur 11 – I cmd vinduet skriver jeg (kopier ikke!) kommandoene og trykker Enter.
Kommando:
Sqlcmd -S %computername%\SBSMonitoring -E -i c:\windows\temp\updateSBSMonitoring.sql
Figur 12 – Kommandoene er vellykket kjørt når du får svaret under.
Changed database context to ‘SBSMonitoring’
(1 rows affected)
Figur 13 – Problem løst.
Tips
Husk å rydd opp i backup og nedkopierte filer etter en dag eller to.