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.
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.