如果伺服器上執行了 SQL Server 關聯式資料庫引擎處理序,且 SSAS 執行個體的總記憶體限制組態高於指定的臨界值,此監視器會發出警示,以確保 SQL Server 處理序能有足夠的記憶體。
應該相對應地調整 SQL Server Analysis Services 總記憶體限制組態設定,以容納電腦上其他處理序的記憶體配置。
特別是 SQL Server 關聯式資料庫引擎,就是一個主要常見可能會耗用同時也在執行 SSAS 之電腦上記憶體資源的處理序範例。在此情況下,可能會導致這兩者重度取用相同的固定資源,而互相競爭實體記憶體。這種情況需要將兩個資料庫服務,設定成共用足夠的實體記憶體,以執行其必要的功能。如果 SSAS 總記憶體限制的組態太高,則 SSAS 可能會因為與關聯式資料庫引擎 (實際上其他耗用大量記憶體的處理序也是一樣) 互相競爭,而耗用過多的記憶體,導致實體記憶體耗盡。總記憶體限制應設定得夠低到能同時容納 SQL Server 設定的記憶體消耗,再加上額外的空間供作業系統與電腦上其他一般處理序記憶體消耗的基本量使用。
發生記憶體組態衝突時,系統管理員必須考量使用者與其他處理序的資源及需求,所有相關處理序的組態,都必須相對應地調整。Microsoft 資料庫伺服器上發生這類問題最常見的情況,是由 SSAS 執行個體和 SQL Server 關聯式資料庫引擎執行個體所引起。幸運的是,這兩個服務都提供可視需要調整的功能組態設定。SSAS 沒有統一的正確總記憶體限制設定,或 SQL 關聯式資料庫引擎的記憶體限制上限設定。因此,系統管理員可以考量每種特定環境來調整此警示的臨界值。發生時,此狀況可透過下列任一可能的方式予以減輕:
調整 SQL Server 執行個體記憶體上限設定,可減少那些程序所消耗的記憶體。
降低 SSAS 執行個體總記憶體限制的組態設定,以減少這些處理序所耗用的記憶體。
在伺服器上增加可用記憶體。
調整警示的臨界值。
若是系統管理員判斷為不需要的情況,請停用此警示。
Memory configuration and sizing considerations in SQL Server 2016 (SQL Server 2016 中記憶體組態與設定大小的考量事項)
Analysis Services 記憶體屬性的 TechNet 文件
SSAS Multidimensional Performance Guide (SSAS 多維度效能指南)
名稱 | 描述 | 預設值 |
已啟用 | 啟用或停用工作流程 | 是 |
產生警示 | 定義工作流程是否產生警示 | 是 |
間隔秒數 | 執行工作流程的週期性時間間隔 (秒)。 | 604800 |
同步處理時間 | 使用 24 小時制指定的同步處理時間。將會忽略。 |
|
警告臨界值 (%) | 如果伺服器上目前正在執行 SQL Server 關聯式資料庫引擎處理序,且 SSAS 執行個體的總記憶體限制組態設定超出臨界值,則 [健全狀況狀態] 會變更。 | 40 |
逾時 (秒) | 指定允許工作流程在關閉且標示為失敗之前執行的時間。 | 300 |
Target | Microsoft.SQLServer.2016.AnalysisServices.Instance | ||
Parent Monitor | System.Health.ConfigurationState | ||
Category | ConfigurationHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer" Accessibility="Public" Enabled="true" Target="SQLAS!Microsoft.SQLServer.2016.AnalysisServices.Instance" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.2016.AnalysisServices.MonitorType.Instance.ConfigurationConflictWithSQLServer" ConfirmDelivery="false">
<Category>ConfigurationHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2016.AnalysisServices.UnitMonitor.Instance.ConfigurationConflictWithSQLServer.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='MemoryLimitHighGB']$</AlertParameter1>
<AlertParameter2>$Data/Context/Property[@Name='MemoryLeavesForOsGB']$</AlertParameter2>
<AlertParameter3>$Data/Context/Property[@Name='TotalPhysicalMemoryGB']$</AlertParameter3>
<AlertParameter4>$Data/Context/Property[@Name='MemoryUsageGB']$</AlertParameter4>
<AlertParameter5>$Data/Context/Property[@Name='MemoryUsageByOtherProcessGB']$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='UsedPhysicalMemoryGB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='MemoryLimitLowGB']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='MemoryLimitLowPercent']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='MemoryLimitHighPercent']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Warning" MonitorTypeStateID="ConfigurationConflict" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="NoConfigurationConflict" HealthState="Success"/>
</OperationalStates>
<Configuration>
<Threshold>40</Threshold>
<IntervalSeconds>604800</IntervalSeconds>
<SyncTime/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>