Felsöka Service Manager OLAP-kuber

Viktigt

Den här Service Manager har nått slutet av supporten rekommenderar vi att du uppgraderar till Service Manager 2022.

I följande avsnitt beskrivs vanliga problem som du kan behöva felsöka OLAP-datakuber (Online Analytical Processing) i Service Manager informationslagret.

Bearbetningsfel

Skyddsåtgärderna för DWRepository-databasen som är avsedda att garantera dataintegriteten kan inte helt eliminera risken för fel vid bearbetning. Det vanligaste bearbetningsfelet är undantagsfelet DimensionKeyNotFound. Eftersom SQL Server Analysis Server (SSAS) bearbetas var 60:e minut som standard är det möjligt att dimensionsnycklarna ännu inte finns medan måttgruppen för fakta bearbetas. Standardbearbetningslogiken i det fallet är att att ombearbeta SSAS-dimensionerna med en ProcessUpdate-uppgift och sedan bearbeta om fakta upp till två gånger för att lösa nyckelproblemen.

Det finns några ovanliga situationer när denna ombearbetning inte kan genomföras. Här följer möjliga orsaker till detta:

  • Det är bara i datalagrets databas som främmande nycklar används för att skydda dataintegriteten. Dataarkivet innehåller inga främmande nycklar av prestandaskäl. Eftersom data flyttas via massinläsning från databasen till dataarkivet med Active X-dataobjektmetoder är det möjligt att fakta kan ha lästs in före dimensionsnycklarna på grund av ett tidsinställningsproblem. Du löser problemet genom att köra inläsningsprocessen igen för att flytta de befintliga dimensionsnycklarna.

  • Om det finns flera dataarkiv har alla dimensioner för varje dataarkiv det primära datalagrets dataarkiv som mål. Syftet med detta är att minska OLAP-kubernas storlek och förkorta bearbetningstiden. Det är dock möjligt att fakta i Operations Manager- eller Configuration Manager-dataarkiv har som mål dimensionsnycklar som ännu inte finns i det primära datalagrets dataarkiv. I så fall måste du köra inläsningsjobbet på det primära dataarkivet för att lösa bearbetningsfelet för kuber vars mål är dataarkiv i Operations Manager eller Configuration Manager.

Felsöka MDX-anpassningar

Eftersom många kubanpassningar kräver kunskaper om flerdimensionella uttryck (MDX) är det vanligt att syntaxfel uppstår i det första MDX-uttrycket som används för anpassning av OLAP-kub. Du kan behöva göra flera försök innan uttrycket passar dina behov. Du bör testa MDX-uttrycket på OLAP-kuben med hjälp av Business Intelligence Development Studio (BIDS) eller SSAS, utan att spara ändringarna, innan du lägger till MDX-uttrycket i OLAP-kuben med en CubeExtension eller definierar det i Elementet SystemCenterCube.

Om ett fel ändå skulle uppstå i MDX-uttrycket när du har lagt till det i ett hanteringspaket med hjälp av CubeExtension, kan du avinstallera kubtillägget för att ångra eventuella ändringar som gjorts i OLAP-kuben. Om uttrycken har definierats med ett SystemCenterCube-element måste du avinstallera hanteringspaketet och sedan manuellt ta bort OLAP-kuben från SSAS innan du gör några rättelser och distribuerar OLAP-kubhanteringspaketet igen. Du bör därför definiera kubanpassningar med CubeExtension-elementet.

Distributionsfel för OLAP-kubhanteringspaket

Du kan ha en situation där du vill bläddra i måttgruppen WorkItems Tilldelad till User och sedan dela upp alla användare på en viss avdelning. När du försöker utföra filter på UserDim, händer ingenting eller inga data returneras. Detta kan vara mycket förvirrande eftersom UserDim har en relation till måttgruppen.

Då är det viktigt att komma ihåg att samma databasdimension kan ha flera roller i en flerdimensionell modell. Vi kallar dessa dimensioner för rollspelsdimensioner. Dimensionen Time kan till exempel användas flera gånger i en OLAP-kub som beskriver flyginformation. De olika rollspelsdimensionerna i det här fallet kan vara Avgångstid och Ankomsttid, där båda är mål för tidsdimensionen .

I exemplet Tilldelad till WorkItems är det angivna rollspelsnamnet för användardimensionen faktiskt AssignedToUser. Om användaren filtreras efter den här dimensionen i stället för "UserDim" returneras rätt information.

I BIDS finns fliken Dimensionsanvändning som är en mycket användbar funktion. Den visar relationerna mellan dimensioner och OLAP-kuber så att du kan fastställa vilka dimensioner som ska användas vid uppdelning av data i OLAP-kuben. I exemplet med WorkItems Tilldelad till-användare har UserDim dessutom ingen relation till måttgruppen WorkItemAssignedToUser , medan UserDim(AssignedToUser) har en relation till måttgruppen där kopplingsattributet är UserDimKey. I det här fallet kan du se att rollspelsnamnet är markerat inom parenteserna på fliken Dimensionsanvändning.

Service Manager har inte någon funktion på fliken Dimensionsanvändning. Därför måste du titta i BIDS för att ta reda på exakt vilka dimensioner som kan filtreras fram på en viss kub.

Det gick inte att bearbeta OLAP-kuber på en fjärransluten SSAS-server

I vissa situationer går det inte att bearbeta en OLAP-kub på en fjärransluten SSAS-server eftersom brandväggen inte har ställts in på rätt sätt. Standardinstansen av SSAS använder TCP/IP-port 2383 och den här porten måste avblockas i brandväggen för att tillåta åtkomst. Avblockera porten genom att köra följande kommandoradsinstruktioner:

C:\Windows\system32>set port=2383   
C:\Windows\system32>netsh advfirewall firewall add rule name="Analysis Services" protocol=TCP dir=in localport=2383 action=allow  

OLAP-kubbearbetning stoppas

Det kan finnas flera orsaker till att OLAP-kubbearbetningen avbryts. Du måste först se till att servern har tillräckligt med RAM-minne, särskilt i situationer där informationslagret och SSAS-servern finns på samma server, så att det finns tillräckligt med minne för att köra jobb för extrahering, transformering och inläsning av informationslager (ETL) och kubbearbetning samtidigt. Några möjliga lösningar visas i listan här:

  1. Det finns kända deadlock-problem i Microsoft SQL Server 2008 Analysis Services. Lösningen är att öka antalet trådar i bearbetningstrådpoolen innan bearbetningen stoppas. Om systemet redan har stoppats är lösningen att starta om både System Center Management-tjänsten och Analysis Services-tjänsten och sedan återställa kubbearbetningsarbetsuppgiften till statusen 3, vilket innebär att den inte startas, så att Service Manager-arbetsflödesmotorn kan starta om den.

    Anteckning

    Du kan fastställa det relevanta arbetsobjektet för kubbearbetning genom att köra följande frågor i DWStagingAndConfig-databasen. Tänk på att frågorna visas var för sig, men du kan lätt lägga ihop dem i en och samma fråga:

    select processId from infra.process where processname like 'Process.{CubeName}'  
    select batchid from infra.batch where processId = {ProcessId from previous query}  
    select * from infra.workitem(nolock) where BatchId = {BatchId from previous query}  
    update infra.workitem set statusid = 3 where workitemId = {workitemId from previous query)  
    
    
  2. Kontrollera att egenskapen CoordinatorExecutionMode i SSAS-tjänsten är rätt inställd. Du kan läsa mer om det här problemet på SQL Server forumen.

DWMaintenance-uppgiften stoppas i steget ManageCubePartitions eller ManageCubeTranslations

I det här fallet är den vanligaste orsaken en SSAS-server som inte svarar. Lösningen är densamma för det första steget i föregående avsnitt, "OLAP-kubbearbetning stoppas". För att fastställa relevant kubbearbetnings workitem kan du köra följande frågor på DWStagingAndConfig-databas. Tänk på att frågorna visas var för sig, men du kan lätt lägga ihop dem i en och samma fråga:

select processid from infra.process where processname = 'DWMaintenance'  
select * from infra.ProcessModule where ProcessId = {ProcessId from previous query} (Note the ProcessModuleId where the VertexName is ManageCubePartitions/ManageCubeTranslaions)  
Select * from infra.batch where ProcessId = {ProcessId from previous query} (Note the BatchId from the largest batch)  
select * from infra.WorkItem where BatchId = {BatchId from previous query}  
update infra.workitem set statusid = 3 where workitemId = {workitemId for the step that is not responding with the corresponding processmoduleid for ManageCubePartitions/ManageCubeTranslations)  

Nästa steg