Această remediere rapidă se aplică și la Microsoft SQL Server 2014 Analysis Services (SSAS 2014).
Simptome
Să presupunem că aveți unele dimensiuni în Microsoft SQL Server 2012 Analysis Services (SSAS 2012) sau SQL Server 2014 Analysis Services (SSAS 2014) cub (Tfs_Analysis) care conține datele pentru Microsoft Visual Studio Team Foundation Server (TFS). Atunci când rulați o comandă de proces pentru dimensiunile, procesarea poate să nu reușească și primiți următorul mesaj de eroare:
Eroare internă: a apărut o eroare neașteptată (fișier ' pfiallocator. cpp ', line 822, funcția ' PFMemoryHolder:: RegisterMemoryHolder ').
Dacă utilizați SQL Profiler pentru a urmări problema, tracea arată că următorul mesaj de eroare apare în timpul comenzii ProcessFull din dimensiunea vDimWorkItemTreeOverlay :
Eroare internă: a apărut o eroare neașteptată (fișier ' pfiallocator. cpp ', line 822, funcția ' PFMemoryHolder:: RegisterMemoryHolder '). Erorile din motorul de stocare OLAP: s-a produs o eroare în timp ce atributul ' WorkItemTreeSK ' al dimensiunii arborelui elementului de lucru din baza de date ' Tfs_Analysis ' a fost procesat.
Notă Eroarea de procesare afectează proiectarea bazei de date Analysis Services care conține surse de date care au utilizat furnizorul de date .NET Framework gestionat pentru SQL Server, care este System. data. SqlClient.
Cauză
Problema apare deoarece o valoare cheie de dimensiune dublură din sursa de date este utilizată de procesarea Analysis Services.
Rezolvare
Problema a fost remediată pentru prima dată în următoarea actualizare cumulativă de SQL Server.
Actualizarea cumulativă 1 pentru SQL Server 2014 /en-us/help/2931693
Actualizarea cumulativă 6 pentru SQL Server 2012 SP1 /en-us/help/2874879
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Mai multe informații
După ce aplicați remedierea rapidă, procesarea se va comporta conform setărilor de configurare a erorilor de procesare în loc de simptome de eroare internă. Puteți să controlați comportamentul utilizând setarea de cheie duplicat atunci când procesați dimensiunile elevului. Sau puteți să controlați comportamentul prin configurarea proprietății KeyDuplicate a proprietății ErrorConfiguration după cum urmează atunci când proiectați dimensiunile:
-
Atunci când setarea KeyDuplicate este setată la setarea implicită IgnoreError, nu există avertismente atunci când se întâlnește o valoare cheie dublură și procesarea continuă.
-
Atunci când setarea KeyDuplicate este setată la ReportAndContinue, se raportează erorile sau avertismentele. Cu toate acestea, procesarea continuă.
-
Atunci când setarea KeyDuplicate este setată la ReportAndStop, erorile sau avertismentele sunt raportate și procesarea este oprită.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Soluție de evitare
Pentru a rezolva problema, ștergeți cheia dublură nevalidă din tabelele dimensiune depozit de date din motorul de baze de date SQL Server. Puteți utiliza următoarea interogare pentru a găsi cheia duplicat:SELECT COUNT(WorkItemTreeSK) WorkItemTreeSKCount, WorkItemTreeSKFROM [Tfs_Warehouse].dbo.vDimWOrkItemTreeOverlayGROUP BY WorkItemTreeSKHAVING COUNT(WorkItemTreeSK) >1
Referințe
Pentru mai multe informații despre opțiunile de procesare și setări, accesați următorul site Web MSDN:
Informații despre opțiunile de procesare și setăriPentru mai multe informații despre cum să procesați manual depozitul sau cubul, accesați următorul site Web MSDN:
Procesați manual depozitul de date și cub Analysis Services pentru Team Foundation Server