Gegevensfouten corrigeren die integratie van Management Reporter verhinderen

Dit artikel bevat een script voor het corrigeren van gegevensfouten die integratie van Management Reporter verhinderen.

Van toepassing op: Microsoft Dynamics SL 2011 Service Pack 2, Microsoft Dynamics SL 2011 Service Pack 1, Microsoft Dynamics SL 2011, Microsoft Dynamics SL 2015
Origineel KB-nummer: 2931999

Samenvatting

Dit artikel bevat stappen voor het uitvoeren van een Diagnostics.sql script voor Management Reporter 2012 voor Microsoft Dynamics SL 2011 en Dynamics SL 2015. Met dit script kunnen gegevensfouten worden geïdentificeerd die een succesvolle integratie van Management Reporter kunnen verhinderen. Gegevensfouten kunnen afkomstig zijn van veel bronnen en kunnen inconsistentie tussen tabellen veroorzaken of ongeldige veldwaarden maken.

Onderaan dit artikel vindt u ook een aantal scripts die worden gebruikt om kleine letters te vinden die problemen kunnen veroorzaken in MR.

Oplossing

Download het volgende scriptbestand en volg deze stappen om de scripts uit te voeren op de Microsoft Dynamics SL-toepassingsdatabase in Management Reporter. Wijzig het uitvoertype in Tekstuitvoer voor eenvoudigere weergave.

MR4.zip

Opmerking

Dezelfde informatie is opgenomen in het bestand Diagnostics4.Sql, dat is opgenomen in het bestand MR4.zip.

Belangrijk

Maak altijd een back-up van een database voordat u gegevens bijwerkt in Management Studio.

Stap 1

  • Hebt u meer dan één valuta-id ingesteld?

    Select 'Step1a', CASE WHEN COUNT(*)>1 then 'YES' else 'NO' end, count(*) from currncy with (nolock)
    

    Opmerking

    • Nee = eenheidsmunt
    • Ja = meerdere valuta's die zijn ingesteld in Valutaonderhoud en waarin het getal wordt vermeld.
  • Is multicurrency ingeschakeld?

    Select top 1 'Step1b',case isnull((select MAX(mcactivated) from cmsetup),-99) WHEN 1 then 'ENABLED' when -99 then 'NOT SETUP' else 'NOT ENABLED' end
    

Opmerking

Dit script retourneert Ingeschakeld of Niet instellen.

Stap 2

Zoek naar een ongeldige valuta-instellingsrecord. Evalueer elke situatie. Neem contact op met de technische ondersteuning van Microsoft Dynamics voor hulp hierbij.

  • Dit moet de basisvaluta van de toepassingsdatabase zijn:

    Select 'Step2a',BaseCuryId from glsetup with (nolock)
    
  • De basisvaluta van het werkelijke grootboek (saldotype = 'a') moet de basisvaluta van de database zijn.

    Select 'Step2b',BaseCuryID,LedgerID, BalanceType from ledger with (nolock)
    
  • Het veld BaseCuryID van alle bedrijven in een bepaalde toepassingsdatabase moet allemaal hetzelfde zijn.

  • Dit script toont het veld BaseCuryID van alle toepassingsdatabases die zijn gekoppeld aan de systeemdatabase.

    Select 'Step2c',BaseCuryID, CpnyID, databasename from vs_company with (nolock)
    
  • Het veld BaseCuryID's moet aanwezig zijn in de valutaonderhoudstabel. Eventuele vreemde valuta's moeten ook in deze tabel voorkomen.

    Select 'Step2d',curyid from currncy with (nolock)
    

Stap 3

Zoek naar onjuiste waarden voor de velden CuryID en grootboek-ID in de transactie- en samenvattingsrecords. Deze instructies hebben alleen toegang tot de top 100 records. Als u alle records wilt zien, verwijdert u de woorden top 100 uit het script.

  • Accthist met een valuta-id die niet in de valutaonderhoudstabel staat.

    Select top 100 'Step3a',CpnyID, LedgerID, FiscYr, Acct, SUB, CuryId, * from accthist with (nolock) where CuryId not in (select CuryId from Currncy with (nolock))
    

    Oplossing: mogelijk moet u het veld CuryID bijwerken zodat deze overeenkomt met het veld BaseCuryID. Deze record bestaat echter mogelijk al. In dit geval ontvangt u een 6909-bericht. Als dit gebeurt, bepaalt u of de record is vereist.

  • Accthist die een valuta-id heeft die niet overeenkomt met de grootboekrecord (of voor een grootboek dat zich niet in de grootboektabel bevindt).

    Select top 100 'Step3b',a.CpnyID, a.LedgerID, a.FiscYr, a.Acct, a.SUB, a.CuryId, l.BaseCuryID,* from accthist a with (nolock) left join Ledger l with (nolock) on a.LedgerID=l.LedgerID where l.LedgerID is null OR l.BaseCuryID<>a.CuryId
    

    Oplossing: De update is afhankelijk van elke situatie.

  • CuryAcct met een CuryID die niet in de valutaonderhoudstabel staat.

    Select top 100 'Step3c',CpnyID, LedgerID, FiscYr, Acct, SUB,BaseCuryID, CuryId, * from curyacct with (nolock) where CuryId not in (select CuryId from Currncy with (nolock))
    

    Oplossing: De update is afhankelijk van elke situatie. Mogelijk moet u de record later verwijderen als er geen bijbehorende AcctHist-record is. Mogelijk moet u ook het veld CuryID bijwerken. Deze record bestaat echter mogelijk al. In dit geval ontvangt u een 6909-bericht. Als dit gebeurt, bepaalt u of de record nodig is.

  • CuryAcct met een BasecuryID die niet overeenkomt met de grootboekrecord (of voor een grootboek dat zich niet in de grootboektabel bevindt).

    Select top 100 'Step3d',c.CpnyID, c.LedgerID, c.FiscYr, c.Acct, c.SUB,c.BaseCuryID, c.CuryId,l.BaseCuryID, * from curyacct c with (nolock) left join Ledger l with (nolock) on c.LedgerID=l.LedgerID where l.LedgerID is null OR c.BaseCuryID<>l.BaseCuryId
    

    Oplossing: De update is afhankelijk van elke situatie.

  • GLTran met een CuryID die niet in de valutaonderhoudstabel staat.

    Select top 100 'Step3e',CpnyID, LedgerID, FiscYr, Acct, SUB,BaseCuryID, CuryId,* from gltran with (nolock) where Posted='P' and CuryId not in (select CuryId from Currncy)
    

    Oplossing: De update is afhankelijk van elke situatie. Mogelijk moet u het curyId-veld bijwerken naar een geldige waarde.

  • GLTran met een BaseCuryID-veldwaarde die niet overeenkomt met de grootboekrecord (of voor een grootboek dat zich niet in de grootboektabel bevindt).

    Select top 100 'Step3f',g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.SUB, g.BaseCuryID, g.CuryId, * from gltran g with (nolock) left join Ledger l with (nolock) on g.LedgerID=l.LedgerID where g.Posted='P' and g.LedgerID is null OR l.BaseCuryID<>g.BaseCuryId
    

    Oplossing: De update is afhankelijk van elke situatie. Mogelijk moet u het veld BaseCuryID bijwerken naar een geldige waarde.

Stap 4

Zoek naar niet-overeenkomende samenvattingsrecords.

  • CuryAcct-records zoeken zonder AcctHist-records.

    Select top 100 'Step4a',c.CpnyID, c.LedgerID, c.FiscYr, c.Acct, c.Sub, c.BaseCuryID, c.CuryId,* from CuryAcct c with (nolock) left join AcctHist a with (nolock) on c.CpnyID=a.CpnyID and c.Acct=a.Acct and c.Sub=a.Sub and c.LedgerID=a.LedgerID and c.FiscYr=a.FiscYr where a.CpnyID is null order by c.CpnyID, c.Acct, c.SUB, c.ledgerid, c.FiscYr
    

    Oplossing: Voer het Fix4a.SQL-script uit vanuit MR2.zip op databases met één valuta en databases met meerdere valuta's als er fouten worden gerapporteerd.

  • Accthist zoeken zonder CuryAcct-records.

    Select top 100 'Step4b',a.CpnyID, a.LedgerID, a.FiscYr, a.Acct, a.Sub, a.CuryId, * from AcctHist a with (nolock) left join Curyacct c with (nolock) on c.CpnyID=a.CpnyID and c.Acct=a.Acct and c.Sub=a.Sub and c.LedgerID=a.LedgerID and c.FiscYr=a.FiscYr where a.BalanceType='A' and c.CpnyID is null order by a.CpnyID, a.Acct, a.SUB, a.ledgerid, a.FiscYr
    

    Oplossing: voor databases met meerderecurrency initialiseert u een curyacct-record in de initialisatiemodus ingl-accountgeschiedenis> of boekt u een transactie naar de acct/sub/grootboek/fiscyr/cpnyid/curyid. Als u een curyacct-record wilt maken of bijwerken op het tabbladValuta vanGL-accountgeschiedenis>>, moet u de gegevens voor elke periode invoeren. Wanneer u een batch maakt om een transactie naar het account te posten, moet hiermee een CuryAcct-record worden gemaakt die waarden voor elke periode bevat. Zorg ervoor dat u het jaar gebruikt waarin de fout wordt gerapporteerd als het jaar voor het posten. Draai vervolgens de batch om om de dollars uit het account te verwijderen.

    Voor een database met één valuta opent u de record inGL-accountgeschiedenis> tijdens de initialisatiemodus als er slechts één of twee records zijn. Wijzig het beginsaldo met een bepaald bedrag, sla de record op, zet deze terug en sla het vervolgens opnieuw op. Hiermee wordt de curyacct-record gemaakt. U kunt het script ook uitvoeren vanuit stap 6a in deze sectie.

  • GLTrans zonder AcctHist

    Deze query wordt langzaam uitgevoerd als er veel gltrans-vermeldingen zijn en als alle vermeldingen geldig zijn. (De query wordt sneller uitgevoerd als er slechte gegevens zijn.)

    Select top 100 'Step4c',g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.Sub, g.BaseCuryID, g.CuryId, * from GLTran g with (nolock) left join AcctHist a with (nolock) on g.CpnyID=a.CpnyID and g.Acct=a.Acct and g.Sub=a.Sub and g.LedgerID=a.LedgerID and g.FiscYr=a.FiscYr inner join vs_company c with (nolock) on g.CpnyID=c.CpnyID and c.CpnyCOA in (select CpnyID from glsetup with (nolock)) -- only companies in this application DB where g.posted='P' and a.CpnyID is null order by g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.Sub option (force order) -- added for performance in larger databases
    

    Oplossing: Evalueer de GLtrans-veldvermeldingen. Als er geen AcctHist-record is, gebruikt het financiële apparaat deze transacties niet voor rapporten.

  • Dit komt meestal doordat de transacties oud zijn. U kunt besluiten deze te verwijderen of een andere actie te ondernemen. Evalueer deze vermeldingen zorgvuldig.

Stap 5

Zoek naar GLTrans-records met ongeldige datums of punten. Dergelijke records kunnen de volgende fouten veroorzaken in Management Reporter:

  • Fouttekst: de parameters Year, Month en Day beschrijven een niet-representeerbare datum/tijd.

  • Fouttekst: Objectverwijzing is niet ingesteld op een exemplaar van een object.

  • GLTrans-records met een leeg FiscYr-veld.

    Select top 100 'Step5a',CpnyID, LedgerID, FiscYr, Acct, Sub, perpost, perent, trandate, Posted, Rlsed, BatNbr, Module, * from GLTran with (nolock) where FiscYr='' and (Rlsed=1 or Posted='P')
    

    Oplossing: Overweeg het veld FiscYr bij te werken op basis van de perpostwaarde.

  • GLTrans-records met een perpostwaarde die ver buiten een normaal bereik ligt.

    Select top 100 'Step5b',CpnyID, LedgerID, FiscYr, Acct, Sub, perpost, perent, trandate, Posted, Rlsed, BatNbr, Module, * from GLTran with (nolock) where (PerPost>='204812' or PerPost<='195001') and (Rlsed=1 or Posted='P')
    

    Oplossing: Deze batches hebben waarschijnlijk een toekomstige periode om te posten. U kunt deze batches openen in GL>Logboek Transacties tijdens de initialisatiemodus. Verwijder ze, wijzig de periode die moet worden geplaatst of verwerkt ze, indien van toepassing.

  • GLTrans-records met een transdatewaarde die ver buiten een normaal bereik ligt (vaak met een jaar 2079).

    Select top 100 'Step5c',CpnyID, LedgerID, FiscYr, Acct, Sub, perpost, perent, trandate,Posted, Rlsed, BatNbr, Module, * from GLTran with (nolock) where (trandate>='01/01/2048' or trandate<='01/01/1950') and (Rlsed=1 or Posted='P') and TranDate<>'1/1/1900'
    

    Oplossing: Trandate bijwerken naar crtd_datetime. Dit script laat zien hoe.

    update gltran set trandate=crtd_datetime where (trandate>='01/01/2048' or trandate<='01/01/1950') and (Rlsed=1 or Posted='P') and TranDate<>'1/1/1900'
    
  • AcctHist-records met een FiscYr-veld ver buiten een normaal bereik.

    select top 100 'Step5d',a.CpnyID, a.LedgerID, a.FiscYr, a.Acct, a.Sub, a.CuryId, * from AcctHist a with (nolock) where a.FiscYr>'2048' or a.FiscYr<'1950' or len(a.FiscYr) < 4
    

    Oplossing: dit zijn waarschijnlijk ongewenste records. Bij het bewerken van gegevens in het verleden hebt u het fiscale jaar mogelijk ingesteld op een toekomstig jaar om de records te bewaren voor latere controle.

Stap 6

Zoek exemplaren waarin de bedragen in de AcctHist-record niet overeenkomen met de bedragen in de CuryAcct-record .

Opmerking

Voer deze instructie pas uit nadat de problemen in stap 1 tot en met 5 zijn opgelost.

select
   top 1000 'Step6a',
   a.CpnyID,
   a.Acct,
   a.Sub,
   a.LedgerID,
   a.FiscYr,
   c.numCuryAcct,
   a.BegBal,
   c.begbal,
   a.PtdBal00,
   c.ptdbal00,
   a.PtdBal01,
   c.ptdbal01,
   a.PtdBal02,
   c.ptdbal02,
   a.PtdBal03,
   c.ptdbal03,
   a.PtdBal04,
   c.ptdbal04,
   a.PtdBal05,
   c.ptdbal05,
   a.PtdBal06,
   c.ptdbal06,
   a.PtdBal07,
   c.ptdbal07,
   a.PtdBal08,
   c.ptdbal08,
   a.PtdBal09,
   c.ptdbal09,
   a.PtdBal10,
   c.ptdbal10,
   a.PtdBal11,
   c.ptdbal11,
   a.PtdBal12,
   c.ptdbal12,
   a.ytdBal00,
   c.ytdbal00,
   a.ytdBal01,
   c.ytdbal01,
   a.ytdBal02,
   c.ytdbal02,
   a.ytdBal03,
   c.ytdbal03,
   a.ytdBal04,
   c.ytdbal04,
   a.ytdBal05,
   c.ytdbal05,
   a.ytdBal06,
   c.ytdbal06,
   a.ytdBal07,
   c.ytdbal07,
   a.ytdBal08,
   c.ytdbal08,
   a.ytdBal09,
   c.ytdbal09,
   a.ytdBal10,
   c.ytdbal10,
   a.ytdBal11,
   c.ytdbal11,
   a.ytdBal12,
   c.ytdbal12
from
   AcctHist a
   inner join
      (
         select
            count(*) as numCuryAcct,
            CpnyID,
            Acct,
            Sub,
            LedgerID,
            FiscYr,
            SUM(begbal) as begbal,
            SUM(ptdbal00) as ptdbal00,
            SUM(ptdbal01) as ptdbal01,
            SUM(ptdbal02) as ptdbal02,
            SUM(ptdbal03) as ptdbal03,
            SUM(ptdbal04) as ptdbal04,
            SUM(ptdbal05) as ptdbal05,
            SUM(ptdbal06) as ptdbal06,
            SUM(ptdbal07) as ptdbal07,
            SUM(ptdbal08) as ptdbal08,
            SUM(ptdbal09) as ptdbal09,
            SUM(ptdbal10) as ptdbal10,
            SUM(ptdbal11) as ptdbal11,
            SUM(ptdbal12) as ptdbal12,
            SUM(ytdbal00) as ytdbal00,
            SUM(ytdbal01) as ytdbal01,
            SUM(ytdbal02) as ytdbal02,
            SUM(ytdbal03) as ytdbal03,
            SUM(ytdbal04) as ytdbal04,
            SUM(ytdbal05) as ytdbal05,
            SUM(ytdbal06) as ytdbal06,
            SUM(ytdbal07) as ytdbal07,
            SUM(ytdbal08) as ytdbal08,
            SUM(ytdbal09) as ytdbal09,
            SUM(ytdbal10) as ytdbal10,
            SUM(ytdbal11) as ytdbal11,
            SUM(ytdbal12) as ytdbal12
         from
            curyacct
         group by
            CpnyID,
            Acct,
            Sub,
            LedgerID,
            FiscYr
      )
      c
      on a.CpnyID = c.CpnyID
      and a.Acct = c.Acct
      and a.Sub = c.Sub
      and a.LedgerID = c.LedgerID
      and a.FiscYr = c.FiscYr
where
   round(a.BegBal, 2) <> round(c.begbal, 2)
   or round(a.PtdBal00, 2) <> round(c.PtdBal00, 2)
   or round(a.PtdBal01, 2) <> round(c.PtdBal01, 2)
   or round(a.PtdBal02, 2) <> round(c.PtdBal02, 2)
   or round(a.PtdBal03, 2) <> round(c.PtdBal03, 2)
   or round(a.PtdBal04, 2) <> round(c.ptdbal04, 2)
   or round(a.PtdBal05, 2) <> round(c.PtdBal05, 2)
   or round(a.PtdBal06, 2) <> round(c.PtdBal06, 2)
   or round(a.PtdBal07, 2) <> round(c.PtdBal07, 2)
   or round(a.PtdBal08, 2) <> round(c.PtdBal08, 2)
   or round(a.PtdBal09, 2) <> round(c.PtdBal09, 2)
   or round(a.PtdBal10, 2) <> round(c.PtdBal10, 2)
   or round(a.PtdBal11, 2) <> round(c.PtdBal11, 2)
   or round(a.PtdBal12, 2) <> round(c.PtdBal12, 2)
   or round(a.ytdBal00, 2) <> round(c.ytdBal00, 2)
   or round(a.ytdBal01, 2) <> round(c.ytdBal01, 2)
   or round(a.ytdBal02, 2) <> round(c.ytdBal02, 2)
   or round(a.ytdBal03, 2) <> round(c.ytdBal03, 2)
   or round(a.ytdBal04, 2) <> round(c.ytdbal04, 2)
   or round(a.ytdBal05, 2) <> round(c.ytdBal05, 2)
   or round(a.ytdBal06, 2) <> round(c.ytdBal06, 2)
   or round(a.ytdBal07, 2) <> round(c.ytdBal07, 2)
   or round(a.ytdBal08, 2) <> round(c.ytdBal08, 2)
   or round(a.ytdBal09, 2) <> round(c.ytdBal09, 2)
   or round(a.ytdBal10, 2) <> round(c.ytdBal10, 2)
   or round(a.ytdBal11, 2) <> round(c.ytdBal11, 2)
   or round(a.ytdBal12, 2) <> round(c.ytdBal12, 2)

Voor een database met één valuta opent u de record inGL-accountgeschiedenis> tijdens de initialisatiemodus als er slechts een paar records zijn. Wijzig het beginsaldo met een bepaald bedrag, sla de record op, zet de record terug en sla deze vervolgens opnieuw op. Hiermee wordt de Curyacct-record bijgewerkt zodat deze overeenkomt met de accthist-record . Als er veel records zijn, voert u het ResetCuryAcctfromAcctHistStep6a.sql-script uit vanuit het MR2.zip-bestand .

Open in een database met meerdere valutagl-accountgeschiedenis> tijdens de initialisatiemodus als er slechts een paar records zijn en klik vervolgens op het tabblad Valuta. Corrigeer elke periode afzonderlijk, indien van toepassing. Als er veel records zijn, voert u het MultiCurrencyStep6aFix.sql-script uit vanuit het MR2.zip-bestand . Elke wijziging wordt aangebracht in de Base CuryID-record.

Nadat u stap 6 hebt voltooid, voert u het Diagnostics2.SQL-script opnieuw uit om te controleren of er geen fouten meer worden gerapporteerd.

Aanvullende scripts voor het vinden van gegevens in kleine letters die problemen in MR kunnen veroorzaken.

Met dit script wordt gezocht naar meerdere records waarvoor de Company.DatabaseName niet dezelfde case hebben (bijvoorbeeld SLDemoApp en SLDEMOAPP). Voer dit script uit op de systeemdatabase.

select c.DatabaseName, c.CpnyID from Company c left outer join sys.databases sd on c.DatabaseName COLLATE Latin1_General_CS_AS= sd.name COLLATE Latin1_General_CS_AS
where sd.name is null and DatabaseName in (select c1.DatabaseName from Company c1 left outer join company c2 on c1.DatabaseName = c2.DatabaseName where c1.DatabaseName=c2.DatabaseName and c1.DatabaseName COLLATE Latin1_General_CS_AS != c2.DatabaseName COLLATE Latin1_General_CS_AS)

Oplossing: werk de databasenaam bij in hoofdletters.

Met dit script wordt gezocht naar de bedrijfs-id en het subaccount in kleine letters in de tabellen accthist, curyacct en gltran. Voer dit script uit op de systeemdatabase.

DECLARE @DbName VARCHAR(50)
DECLARE @useStatement VARCHAR(256)
DECLARE @fullStatement VARCHAR(8000)
DECLARE db_cursor CURSOR FOR
select distinct
   DatabaseName
from
   Company OPEN db_cursor FETCH NEXT
FROM
   db_cursor INTO @DbName WHILE @@FETCH_STATUS = 0
   BEGIN
set
   @DbName = LTRIM(RTRIM(@DbName))
set
   @useStatement = 'USE ' + @DbName + ''
set
   @fullStatement = '

   SELECT
      sub as ''Sub - AcctHist - ' + @DbName + ''',
      *
   FROM
      AcctHist
   WHERE
      UPPER(sub) <> sub COLLATE Latin1_General_CS_AS
      SELECT
         sub as ''Sub - GLTran - ' + @DbName + ''',
         *
      FROM
         GLTran
      WHERE
         UPPER(sub) <> sub COLLATE Latin1_General_CS_AS
         SELECT
            sub as ''Sub - CuryAcct - ' + @DbName + ''',
            *
         FROM
            CuryAcct
         WHERE
            UPPER(sub) <> sub COLLATE Latin1_General_CS_AS
            SELECT
               CpnyID as ''CpnyID - AcctHist - ' + @DbName + ''',
               *
            FROM
               AcctHist
            WHERE
               UPPER(CpnyID) <> CpnyID COLLATE Latin1_General_CS_AS
               SELECT
                  CpnyID as ''CpnyID - GLTran - ' + @DbName + ''',
                  *
               FROM
                  GLTran
               WHERE
                  UPPER(CpnyID) <> CpnyID COLLATE Latin1_General_CS_AS
                  SELECT
                     CpnyID as ''CpnyID - CuryAcct - ' + @DbName + ''',
                     *
                  FROM
                     CuryAcct
                  WHERE
                     UPPER(CpnyID) <> CpnyID COLLATE Latin1_General_CS_AS
                     SELECT
                        SUB as ''Sub - SubAcct - ' + @DbName + ''',
                        *
                     from
                        SubAcct
                     where
                        (
                           SUB collate sql_latin1_general_cp1_cs_as <> upper(SUB)
                        )
                        or
                        (
                           ConsolSub collate sql_latin1_general_cp1_cs_as <> upper(ConsolSub)
                        )
                        '
 exec (@useStatement + @fullStatement) FETCH NEXT
                     FROM
                        db_cursor INTO @DbName
   END
   CLOSE db_cursor DEALLOCATE db_cursor

Oplossing: als u subaccounts met kleine letters vindt, kunt u deze uitvoeren om ze in hoofdletters te plaatsen.

update GLTran set Sub = UPPER(Sub)
update AcctHist set Sub = UPPER(Sub)
update CuryAcct set Sub = UPPER(Sub)

Als u kleine bedrijfs-id's vindt, kunt u deze uitvoeren om ze in hoofdletters te plaatsen.

update accthist set cpnyid = UPPER(cpnyid) WHERE UPPER(CpnyID) <> CpnyID COLLATE Latin1_General_CS_AS
update curyacct set cpnyid = UPPER(cpnyid) WHERE UPPER(CpnyID) <> CpnyID COLLATE Latin1_General_CS_AS
update gltran set cpnyid = UPPER(cpnyid) WHERE UPPER(CpnyID) <> CpnyID COLLATE Latin1_General_CS_AS

Met dit script wordt gezocht naar ledgerID in kleine letters in de tabellen accthist, curyacct en gltran. Voer dit script uit op de toepassingsdatabase.

SELECT TOP 1 LedgerID FROM AcctHist WHERE UPPER(LedgerID) <> LedgerID COLLATE Latin1_General_CS_AS
SELECT TOP 1 LedgerID FROM GLTran WHERE UPPER(LedgerID) <> LedgerID COLLATE Latin1_General_CS_AS
SELECT TOP 1 LedgerID FROM CuryAcct WHERE UPPER(LedgerID) <> LedgerID COLLATE Latin1_General_CS_AS

Oplossing: Als u ledgerID's in kleine letters vindt, kunt u deze uitvoeren om ze in hoofdletters te plaatsen.

update AcctHist set LedgerID = UPPER(LedgerID) where LedgerID COLLATE Latin1_General_BIN like '%[a-z]%'
update GLTran set LedgerID = UPPER(LedgerID) where LedgerID COLLATE Latin1_General_BIN like '%[a-z]%'
update CuryAcct set LedgerID = UPPER(LedgerID) where LedgerID COLLATE Latin1_General_BIN like '%[a-z]%'

Met dit script wordt gezocht naar curyID in kleine letters in de tabellen accthist, curyacct en gltran. Voer dit script uit op de toepassingsdatabase.

SELECT TOP 1 CuryID FROM AcctHist WHERE UPPER(CuryID) <> CuryID COLLATE Latin1_General_CS_AS
SELECT TOP 1 CuryID FROM GLTran WHERE UPPER(CuryID) <> CuryID COLLATE Latin1_General_CS_AS
SELECT TOP 1 CuryID FROM CuryAcct WHERE UPPER(CuryID) <> CuryID COLLATE Latin1_General_CS_AS

Oplossing: Als u curyID's in kleine letters vindt, kunt u deze uitvoeren om ze in hoofdletters te plaatsen.

update AcctHist set CuryId = UPPER(CuryId) where CuryId COLLATE Latin1_General_BIN like '%[a-z]%'  
update GLTran set CuryId = UPPER(CuryId) where CuryId COLLATE Latin1_General_BIN like '%[a-z]%'
update CuryAcct set CuryId = UPPER(CuryId) where CuryId COLLATE Latin1_General_BIN like '%[a-z]%'  

Als er geen fouten worden gerapporteerd na het opnieuw uitvoeren van het Diagnostic2.SQL script, moet de Data Mart voor managementrapporteur opnieuw worden geïntegreerd met behulp van de stappen in KB2964624.