תופעות
Windows SBS מסוף של Windows Small Business Server 2008 עשויה להציג אחת או יותר מהתופעות הבאות.
מאפיין בעיה 1
מצב לא זמין מופיע התראות אחרות תחת המקטע תקציר יסודות רשת של דף בית .
מאפיין בעיה 2
חריג הדומה להודעה הבאה נרשמת בקובץ ה-Console.log:
[5164] 090620.094247.9164: Exception: --------------------------------------- An exception of type 'Type: System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' has occurred. Timestamp: 06/20/2009 09:42:47 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)
מאפיין בעיה 3
לאחר זמן רב, המצבים מופיעות עבור אבטחה והתראות אחרים תחת המקטע תקציר יסודות רשת של דף בית .
סימפטום 4
לאחר זמן רב, הערכים מופיעים בעמודה מצב האבטחה וב עמודה התראות אחרות בכרטיסיה מחשבים של הדף ברשת .
סימפטום 5
בעת ניסיון ליצור באופן ידני את הדוח בכרטיסיה דוחות , מסוף Windows SBS עלול לקרוס אם נבחרה תיבת הסימון אבטחה כדי להוסיף תוכן אבטחה הדוח.
סיבה
בעיה זו מתרחשת מאחר מסד הנתונים ניטור גדולה מאוד. מסוף Windows SBS אין שאילתה על מסד הנתונים של ניטור במהירות.
פתרון
כדי לפתור בעיה זו, הפעל את קובץ ה-script הבא של Windows PowerShell. קובץ script זה מפחית את הנתונים ההיסטוריים במסד הנתונים פיקוח על-ידי הפחתת נתונים היסטוריים הנשמרת מ- 90 ימים ל- 30 יום. כמו כן, קובץ script זה יוצר אינדקסים שיכול לשמש להפעלת שאילתות מהירה יותר. כדי להפעיל קובץ script זה, בצע את הפעולות הבאות:
-
לחץ על התחל, הקלד Notepad בתיבת החיפוש ולאחר מכן לחץ על פנקס רשימות בתוצאת החיפוש.
-
העתק והדבק את קובץ ה-script הבא לתוך ' פנקס רשימות ':
cls;############################################################################ SQL Scripts#########################################################################$sqlScript = @"USE [SBSMonitoring]BEGIN TRAN T1UPDATE [SBSMonitoring].[dbo].[Settings] SET [Value] = 30 WHERE [Name] = 'CleanupPeriod'COMMIT TRAN T1SELECT N'Set CleanupPeriod to 30 days'EXECUTE [SBSMonitoring].[dbo].[CleanupDatabase]SELECT N'CleanupDatabase job done.'-- Create IndexesIF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_index_WMICollectedData_5_K4_K1_K5_2')DROP INDEX [_SBS_BLOG_index_WMICollectedData_5_K4_K1_K5_2] ON [dbo].[WMICollectedData] WITH ( ONLINE = OFF )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]SELECT N'Succeeded to create index _SBS_BLOG_index_WMICollectedData_5_K4_K1_K5_2'IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Reports]') AND name = N'_SBS_BLOG_index_Reports_5_K2_K3_1_4')DROP INDEX [_SBS_BLOG_index_Reports_5_K2_K3_1_4] ON [dbo].[Reports] WITH ( ONLINE = OFF )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]SELECT N'Succeeded to create index _SBS_BLOG_index_Reports_5_K2_K3_1_4'IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_index_WMICollectedData_5_K2D_K4_K5')DROP INDEX [_SBS_BLOG_index_WMICollectedData_5_K2D_K4_K5] ON [dbo].[WMICollectedData] WITH ( ONLINE = OFF )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]SELECT N'Succeeded to create index _SBS_BLOG_index_WMICollectedData_5_K2D_K4_K5'IF EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[Alerts]') AND name = N'_SBS_BLOG_index_Alerts_8_7_')DROP INDEX [_SBS_BLOG_index_Alerts_8_7_] ON [dbo].[Alerts] WITH ( ONLINE = OFF )CREATE INDEX [_SBS_BLOG_index_Alerts_8_7_] ON [SBSMonitoring].[dbo].[Alerts] ([DefinitionID], [ComputerID]) INCLUDE ([DateOccured])SELECT N'Succeeded to create index _SBS_BLOG_index_Alerts_8_7_'-- Create StatisticsIF EXISTS (SELECT * FROM sys.stats WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_stat_WMICollectedData_5_1_4')DROP STATISTICS [dbo].[WMICollectedData].[_SBS_BLOG_stat_WMICollectedData_5_1_4]CREATE STATISTICS [_SBS_BLOG_stat_WMICollectedData_5_1_4] ON [dbo].[WMICollectedData]([WMIInstanceID], [ID], [WMIPropertyID])SELECT N'Succeeded to create statistics _SBS_BLOG_stat_WMICollectedData_5_1_4'IF EXISTS (SELECT * FROM sys.stats WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_dta_stat_WMICollectedData_4_1_5_2_3')DROP STATISTICS [dbo].[WMICollectedData].[_SBS_BLOG_dta_stat_WMICollectedData_4_1_5_2_3]CREATE STATISTICS [_SBS_BLOG_dta_stat_WMICollectedData_4_1_5_2_3] ON [dbo].[WMICollectedData]([WMIPropertyID], [ID], [WMIInstanceID], [DateCollected], [StatusID])SELECT N'Succeeded to create statistics _SBS_BLOG_dta_stat_WMICollectedData_4_1_5_2_3'IF EXISTS (SELECT * FROM sys.stats WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_dta_stat_WMICollectedData_5_1_3_4')DROP STATISTICS [dbo].[WMICollectedData].[_SBS_BLOG_dta_stat_WMICollectedData_5_1_3_4]CREATE STATISTICS [_SBS_BLOG_dta_stat_WMICollectedData_5_1_3_4] ON [dbo].[WMICollectedData]([WMIInstanceID], [ID], [StatusID], [WMIPropertyID])SELECT N'Succeeded to create statistics _SBS_BLOG_dta_stat_WMICollectedData_5_1_3_4'IF EXISTS (SELECT * FROM sys.stats WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_dta_stat_WMICollectedData_5_4_2')DROP STATISTICS [dbo].[WMICollectedData].[_SBS_BLOG_dta_stat_WMICollectedData_5_4_2]CREATE STATISTICS [_SBS_BLOG_dta_stat_WMICollectedData_5_4_2] ON [dbo].[WMICollectedData]([WMIInstanceID], [WMIPropertyID], [DateCollected])SELECT N'Succeeded to create statistics _SBS_BLOG_dta_stat_WMICollectedData_5_4_2'IF EXISTS (SELECT * FROM sys.stats WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_stat_WMICollectedData_2_1_5')DROP STATISTICS [dbo].[WMICollectedData].[_SBS_BLOG_stat_WMICollectedData_2_1_5]CREATE STATISTICS [_SBS_BLOG_stat_WMICollectedData_2_1_5] ON [dbo].[WMICollectedData]([DateCollected], [ID], [WMIInstanceID])SELECT N'Succeeded to create statistics _SBS_BLOG_stat_WMICollectedData_2_1_5'IF EXISTS (SELECT * FROM sys.stats WHERE object_id = OBJECT_ID(N'[dbo].[WMICollectedData]') AND name = N'_SBS_BLOG_stat_WMICollectedData_1_3_5_2')DROP STATISTICS [dbo].[WMICollectedData].[_SBS_BLOG_stat_WMICollectedData_1_3_5_2]CREATE STATISTICS [_SBS_BLOG_stat_WMICollectedData_1_3_5_2] ON [dbo].[WMICollectedData]([ID], [StatusID], [WMIInstanceID], [DateCollected])SELECT N'Succeeded to create statistics _SBS_BLOG_stat_WMICollectedData_1_3_5_2'"@;$userInput = Read-Host -Prompt @"Before running this script, follow the instructions in the Knowledge Base article 981939 to back up your database files. If you are ready to run the script, type the letter 'Y' to confirm that you have backed up the database, and then press 'Enter'. "@;if([System.String]::Compare($userInput, "Y", $true) -ne 0){exit;}################################################################################## Save the sql file to temp folder###############################################################################$sqlFile = [System.IO.Path]::Combine($Env:TEMP, "UpdateSBSMonitoring.sql");$sqlScript | Out-File -FilePath "$sqlFile" -Force;################################################################################## Get SBS2008 log folder###############################################################################$regKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WSSG";$regVal = "ProductLogDir";$sqlLogPath =[System.Environment]::ExpandEnvironmentVariables([Microsoft.Win32.Registry]::GetValue($regKey, $regVal, $null));if([System.String]::IsNullOrEmpty($sqlLogPath)){$sqlLogPath = $Env:TEMP;}$dateTime = Get-Date;$sqlLogFile = "UpdateSBSMonitoring_{1}_{0:HH}{0:mm}{0:ss}.log" -f $dateTime, $dateTime.ToShortDateString().Replace('/', '_');$sqlLogFile = [System.IO.Path]::Combine($sqlLogPath, $sqlLogFile);################################################################################## Call " SqlCmd " to execute the sql script###############################################################################$cmdPara = " -S $Env:COMPUTERNAME\SBSMonitoring -E -i `"$sqlFile`"";Write-Host ("Sqlcmd" + $cmdPara);$processStartInfo = New-Object System.Diagnostics.ProcessStartInfo("Sqlcmd", $cmdPara);$processStartInfo.UseShellExecute = $false;$processStartInfo.ErrorDialog = $true;$processStartInfo.CreateNoWindow = $true;$processStartInfo.RedirectStandardOutput = $true;$processStartInfo.RedirectStandardError = $true;$process = [System.Diagnostics.Process]::Start($processStartInfo);$startTime = [System.DateTime]::Now;$process.WaitForExit(); $finishTime = [System.DateTime]::Now;$stdOutput = $process.StandardOutput.ReadToEnd();$errOutput = $process.StandardError.ReadToEnd();if($process.ExitCode -eq 0 -and $errOutput.Length -eq 0){Write-Host $stdOutput;Write-Host "The script ran successfully."}else{Write-Host $stdOutput;Write-Host $errOutput;Write-Host "An error occurred while running the script. For details about this error, see the log file at $sqlLogFile.";}[System.String]::Join([System.Environment]::NewLine, `(("Sqlcmd" + $cmdPara), `("Started at: " + $startTime), `("Finished at:" + $finishTime), `"Standard Output: ", $stdOutput, `"Error Output: ", $errOutput))| Out-File $sqlLogFile -Force;
-
שמור את הקובץ באמצעות שם הקובץ הבאות:
KB981939.ps1.הערה מומלץ לשמור את הקובץ במיקום שאליו באפשרותך לגשת בקלות. לדוגמה, שמור את הקובץ אל התיקייה C:\windows\temp .
-
לגבות את קבצי מסד הנתונים של פיקוח . לשם כך, בצע את השלבים הבאים:
-
לחץ על התחל, הקלד services. msc בתיבת החיפוש , לחץ לחיצה ימנית services. msc בתוצאת החיפוש ולאחר מכן לחץ על הפעל כמנהל.
אם אתה מתבקש לספק סיסמת מנהל או אישור, הקלד את הסיסמה או ספק את האישור.
-
אתר את שירות שרת SQL (SBSMONITORING) .
-
לחץ לחיצה ימנית על שירות SQL Server (SBSMONITORING) , ולאחר מכן לחץ על עצור.
-
גבה את הקבצים בתיקייה הבאה:
C:\Program (x86) קבצים \Microsot SQL Server\MSSQL.1\MSSQL\Data
-
לחץ לחיצה ימנית על שירות SQL Server (SBSMONITORING) , ולאחר מכן לחץ על התחל.
-
-
לחץ על התחל, הקלד PowerShell בתיבת החיפוש , לחץ לחיצה ימנית על מודולים של Windows PowerShell בתוצאת החיפוש ולאחר מכן לחץ על הפעל כמנהל.
אם אתה מתבקש לספק סיסמת מנהל או אישור, הקלד את הסיסמה או ספק את האישור.
-
בחלון מודולים של Windows PowerShell , שנה את הספריה הנוכחית אל המיקום שבו שמרת את הקובץ KB981939.ps1.
-
הקלד את הפקודה הבאה כדי להפעיל את קובץ ה-script של Windows PowerShell, ולאחר מכן הקש ENTER:
.\kb981939.ps1הערה עליך להגדיר את המדיניות ביצוע Windows PowerShell כדי לאפשר לקבצי script לפעול לפני הפעלת פקודה זו. אחרת, תקבל את הודעת השגיאה הבאה כאשר אתה מפעיל את הפקודה:
אין אפשרות לטעון את קובץ C:\KB981939.ps1 מפני הביצוע של קבצי script אינו זמין במערכת זו. נא ראה "get-עזרה about_signing" לקבלת פרטים נוספים.
לקבלת מידע נוסף אודות אופן קביעת התצורה של המדיניות ביצוע Windows PowerShell, בקר באתר האינטרנט הבא של Microsoft TechNet:
-
הקלד Y כאשר תקבל את ההודעה הבאה:
לפני הפעלת קובץ script זה, בצע את ההוראות ב- t במאמר Knowledge Base 981939כדי לגבות את קבצי מסד הנתונים שלך.
אם אתה מוכן להפעיל את קובץ ה-script, הקלד את האות 'Y' כדי לאשר כי גיבית את מסד הנתונים ולאחר מכן הקש 'Enter'.הערה אם מסד הנתונים ניטור גדול מאוד, קובץ ה-script עשויה לפעול למשך 10 דקות או במשך זמן ארוך יותר. אם קובץ ה-script לא יפעלו בהצלחה, עליך לשחזר את הגיבוי של קבצי מסד נתונים של ניטור .
הפניות
לקבלת מידע נוסף אודות בעיה זו, בקר באתר האינטרנט של TechNet הבא:
התראות SBS 2008 מסוף במאי לקחת זמן רב מדי כדי תצוגה ולהציג את המצבים אבטחה, לא זמין או קריסה