管理 Reporter の統合を防ぐデータのエラーを修正する方法

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:2931999
概要
管理 Reporter 2012 の Microsoft Dynamics の SL の 2011 年の Diagnostics.sql スクリプトを実行する手順について説明します。このスクリプトは成功した管理 Reporter の統合を妨げる可能性のあるデータのエラーを識別できます。データ エラーは多くのソースから可能性がありますテーブル間で不整合が発生するや無効なフィールド値を作成します。

この記事の下部にある MR で問題を起こす可能性のある小文字のデータを検索する使用されるいくつかのスクリプトもあります。
解決方法
管理 Reporter で Microsoft Dynamics の SL のアプリケーション データベースに対してスクリプトを実行する以下の手順に従って、次のスクリプト ファイルをダウンロード.見やすくテキスト出力する出力の種類を変更します。

注: <b>この同じ情報は、MR2.zip ファイルに含まれる Diagnostics2.Sql ファイルに含まれます。

重要: Management Studio 内のどのデータを更新する前にデータベース バックアップを作成常にします。

ステップ 1

  • 1 つ以上の通貨 ID を設定していますか。

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

    注:
    • No = 1 つの通貨
    • メンテナンスの通貨に設定されていて、リストの番号を複数の通貨をはい =
  • 複数通貨は有効ですか。

    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

    注: <b>このスクリプトを「有効」または「セットアップされていません。"を返します

ステップ 2

不正な通貨の設定レコードを探します。それぞれの状況を評価します。これを行う Microsoft Dynamics のテクニカル サポートに問い合わせてください。
  • アプリケーション データベースの基本通貨になります。

    Select 'Step2a',BaseCuryId from glsetup with (nolock)

  • 実際の科目の基本通貨 (バランス タイプ = 'a')、データベースの基本通貨にする必要があります。

    Select 'Step2b',BaseCuryID,LedgerID, BalanceType from ledger with (nolock)
  • BaseCuryIDフィールド、特定のアプリケーション データベース内のすべての会社のすべては同じはず。

  • このスクリプトは、システム データベースに関連付けられているすべてのアプリケーション データベースのBaseCuryIDフィールドを示します。

    Select 'Step2c',BaseCuryID, CpnyID, databasename from vs_company with (nolock)
  • BaseCuryIDsフィールドが通貨の管理テーブルに存在します。外国通貨は、このテーブルにも存在します。

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

手順 3

CuryIDledgerIDのトランザクションおよび概要のレコード フィールドの不適切な値を探します。これらのステートメントは、上位 100 のレコードだけをアクセスします。すべてのレコードを表示するには、「トップ 100」の単語をスクリプトから削除します。
  • 通貨の管理テーブルでは、通貨 ID を持つ Accthist。

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

    修正: BaseCuryIDフィールドと一致するCuryIDフィールドを更新する必要があります。ただし、そのレコードが既に存在します。6909 メッセージを受け取ったらここで。この場合、レコードが必要かどうかを決定します。

  • 元帳記録 (元帳科目表に含まれていないため) と一致しない、通貨 ID を持つ Accthist。

    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

    修正: 更新プログラムはそれぞれの状況によって異なります。

  • 通貨管理テーブルではなく、CuryID のある CuryAcct。

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

    修正: 更新プログラムはそれぞれの状況に依存します。AcctHist の対応するレコードがない場合、後でレコードを削除する必要があります。また、 CuryIDフィールドを更新するあります。ただし、そのレコードが既に存在します。6909 メッセージを受け取ったらここで。この場合、レコードが必要かどうかを決定します。

  • 元帳のレコードと一致しない BasecuryID を使用 (または元帳科目表に含まれていない) を CuryAcct。

    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

    修正: 更新プログラムはそれぞれの状況によって異なります。

  • GLTran の CuryID の通貨管理テーブルにないとは。

    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)

    修正: 更新プログラムはそれぞれの状況によって異なります。CuryIdフィールドを有効な値に更新する必要があります。

  • GLTran の元帳のレコードと一致しないBaseCuryIDフィールドの値を持つ (または元帳科目表に含まれていない)。

    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

    修正: 更新プログラムはそれぞれの状況によって異なります。BaseCuryIDフィールドを有効な値に更新する必要があります。

手順 4

概要の一致しないレコードを検索します。
  • AcctHist レコードの CuryAcct のレコードを検索します。

    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.FiscYrwhere a.CpnyID is null order by c.CpnyID, c.Acct, c.SUB, c.ledgerid, c.FiscYr

    Fix Fix4a.SQL からスクリプトを実行 MR2.zip 単一通貨と複数通貨の両方のデータベースでエラーが報告される場合します。

  • CuryAcct レコードのない Accthist を検索します。

    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.FiscYrwhere a.BalanceType='A' and c.CpnyID is null order by a.CpnyID, a.Acct, a.SUB, a.ledgerid, a.FiscYr

    Fix 複数通貨のデータベースのいずれかの初期化 GL に初期化モードの curyacct レコード > アカウント履歴または post トランザクション、アカウントと sub/科目/fiscyr/cpnyid/curyid を。作成または GL の curyacct レコードを更新 > アカウント履歴 >] を期間ごとにデータを入力する必要があります。勘定にトランザクションを転記するバッチを作成するときに各期間の値を格納する CuryAcct レコードを作成この必要があります。転記年エラーが発生する年を使用することを確認します。逆に、ドルのアカウントを削除するバッチ。

    GL でレコードを開き、単一通貨のデータベースの > のみ 1 つまたは 2 つのレコードがある場合、初期化モード中にアカウントの履歴です。程度で期首残高を変更する、レコードを保存、元に戻すこと、および保存し直して。Curyacct レコードが作成されます。または、このセクションで、手順 6a からスクリプトを実行できます。

  • なし AcctHist GLTrans

    このクエリのすべてのエントリが有効な場合と多くの gltrans エントリがある場合、ゆっくりと実行されます。(クエリは、実際に実行速度が不正なデータがある場合。)

    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.FiscYrinner 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 DBwhere g.posted='P' and a.CpnyID is null order by g.CpnyID, g.LedgerID, g.FiscYr, g.Acct, g.Suboption (force order) -- added for performance in larger databases

    修正: GLtransフィールド エントリを評価します。AcctHist レコードが存在しない場合、「財務」を使用しないこれらのトランザクション レポート
  • 通常トランザクションは古いです。それらを削除またはその他の操作をすることができます。これらのエントリを慎重に評価します。

手順 5

無効な日付または期間を持つ GLTrans のレコードを検索します。このようなレコードは、次のエラーを可能性があります、管理 Reporter で。
  • エラー テキスト: パラメーターを年、月、および日を表す DateTime をについて説明します。
  • エラー文字列: オブジェクト参照がオブジェクトのインスタンスに設定されていません。
  • GLTrans FiscYrの空のフィールドを持つレコード。

    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')

    修正する: perpost の値に基づいて、 FiscYrフィールドを更新します。

  • GLTrans、通常の範囲の範囲外である perpost の値を持つレコード。

    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')

    修正: これらのバッチすべては将来の期間を転記します。GL 内のこれらのバッチを開くことができます > 仕訳帳のトランザクション モードの初期化中にします。
    それら、投稿する、期間を変更するか、適切な処理します。

  • GLTrans (頻繁に、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'

    修正: crtd_datetime に trandate を更新します。このスクリプトを表示する方法。

    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' 

  • 標準の範囲外まで FiscYr フィールドを持つレコードを AcctHist。

    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'

    Fix おそらく不要なレコードです。過去データを操作する、可能性があります設定した会計年度を将来の可能性の確認後、レコードを保持する年。

手順 6

AcctHistレコードの金額がCuryAcctレコードの金額を一致していないインスタンスを探します。

注: <b>1 ~ 5 の手順で問題が修正された後にのみ、このステートメントを実行します。

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 ytdbal12from 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)

GL でレコードを開き、単一通貨のデータベースの > アカウントの履歴中、いくつかのレコードのみがある場合、初期化モードに。程度で期首残高を変更、レコードを保存、レコードを元に戻すおよび、もう一度保存します。CuryacctAccthistレコードに一致するレコードが更新されます。多数のレコードがある場合、MR2.zip ファイルから ResetCuryAcctfromAcctHistStep6a.sql スクリプトを実行します。

複数通貨データベースを開く GL > のみいくつかのレコードをクリック、[通貨] タブの各期間を個別に適切な修正がある場合、初期化モード中にアカウントの履歴です。多数のレコードがある場合、MR2.zip ファイルから MultiCurrencyStep6aFix.sql スクリプトを実行します。CuryIDの基本レコードに変更されます。

手順 6 を完了すると、エラー報告しないことを確認する Diagnostics2.SQL スクリプトを再実行します。



MR で問題を起こす可能性のある小文字のデータを検索するスクリプトを追加します。

このスクリプトは複数のレコード、 Company.DatabaseNameが、同じ大文字と小文字を必要はありません (ex: SLDemoApp および SLDEMOAPP)。システム データベースに対してこのスクリプトを実行します。

c.DatabaseName、会社の c の左外部結合が見つかりませんでしたから c.CpnyID を選択して c.DatabaseName で sd 部 Latin1_General_CS_AS = sd.name 部 Latin1_General_CS_AS

sd.name が null と DatabaseName (c1 を選択します。会社 c1 の左外部結合会社 c2 に c1 からのデータベース名です。DatabaseName = c2。DatabaseName を c1。DatabaseName = c2。DatabaseName c1.DatabaseName 部 Latin1_General_CS_AS! = c2。DatabaseName 部 Latin1_General_CS_AS)

修正: 更新、データベース名を大文字にします。




このスクリプト小文字の企業 ID子会社の accthist、curyacct、gltran のテーブルを探します。システム データベースに対してこのスクリプトを実行します。


@DbName VARCHAR(50) 宣言します。
宣言 @useStatement VARCHAR(256)
宣言 @fullStatement VARCHAR(8000)

Db_cursor カーソルを宣言します。
会社から別のデータベース名を選択します。

オープン db_cursor
Db_cursor INTO @DbName フェッチ次から

@@FETCH_STATUS 中 = 0
開始

@DbName の設定 = LTRIM(RTRIM(@DbName))
設定 @useStatement = 'を使用' + @DbName +」
設定 @fullStatement = '
として sub を選択 'サブ - AcctHist-' + @DbName +' '、*
AcctHist から
場所 UPPER(sub)<>部 Latin1_General_CS_AS サブ

として sub を選択 'サブ - GLTran-' + @DbName +' '、*
GLTran から
場所 UPPER(sub)<>部 Latin1_General_CS_AS サブ


として sub を選択 'サブ - CuryAcct-' + @DbName +' '、*
CuryAcct から
場所 UPPER(sub)<>部 Latin1_General_CS_AS サブ

として選択 CpnyID 'CpnyID - AcctHist-' + @DbName +' '、*
AcctHist から
場所 UPPER(CpnyID) <> CpnyID 部 Latin1_General_CS_AS

として選択 CpnyID 'CpnyID - GLTran-' + @DbName +' '、*
GLTran から
場所 UPPER(CpnyID) <> CpnyID 部 Latin1_General_CS_AS


として選択 CpnyID 'CpnyID - CuryAcct-' + @DbName +' '、*
CuryAcct から
場所 UPPER(CpnyID) <> CpnyID 部 Latin1_General_CS_AS


として SUB を選択 'サブ ・ SubAcct ・' + @DbName + ' '、* SubAcct から場所 (SUB 部 sql_latin1_general_cp1_cs_as <> upper(SUB))
または (ConsolSub 部 sql_latin1_general_cp1_cs_as <> upper(ConsolSub))
'

exec (@useStatement + @fullStatement)

Db_cursor INTO @DbName フェッチ次から
終了

閉じる db_cursor
解放 db_cursor




解決する: 場合は、小文字の子会社には大文字で入力を実行できます。


更新 GLTran 設定、Sub = UPPER(Sub)

更新サブを設定 AcctHist = UPPER(Sub)

更新サブを設定 CuryAcct = UPPER(Sub)



任意の小文字を検索する場合は会社 IDは大文字で入力を実行できます。

更新 accthist セット cpnyid が UPPER(cpnyid) UPPER(CpnyID) = <> CpnyID 部 Latin1_General_CS_AS

更新 curyacct セット cpnyid が UPPER(cpnyid) UPPER(CpnyID) = <> CpnyID 部 Latin1_General_CS_AS

gltran セット cpnyid 更新 UPPER(cpnyid) で UPPER(CpnyID) = <> CpnyID 部 Latin1_General_CS_AS



小文字LedgerID accthist、curyacct、gltran テーブルでこのスクリプトを探します。アプリケーション データベースに対してこのスクリプトを実行します。

選択トップ 1 LedgerID AcctHist からを UPPER(LedgerID) <> LedgerID 部 Latin1_General_CS_AS

選択トップ 1 LedgerID GLTran から先 UPPER(LedgerID) <> LedgerID 部 Latin1_General_CS_AS

選択トップ 1 LedgerID CuryAcct からを UPPER(LedgerID) <> LedgerID 部 Latin1_General_CS_AS



解決する: LedgerIDのいずれかの小文字の場合は大文字で入力するを実行できます。

更新 GLTran 設定 LedgerID = LedgerID 部 Latin1_General_BIN '[a ~ z] %' のように UPPER(LedgerID)

更新 AcctHist 設定 LedgerID = LedgerID 部 Latin1_General_BIN '[a ~ z] %' のように UPPER(LedgerID)

更新 CuryAcct 設定 LedgerID = LedgerID 部 Latin1_General_BIN '[a ~ z] %' のように UPPER(LedgerID)


このスクリプトは、accthist、curyacct、gltran テーブルのCuryIDの小文字を検索します。アプリケーション データベースに対してこのスクリプトを実行します。

選択 1 の CuryID のトップ AcctHist からを UPPER(CuryID) <> CuryID 部 Latin1_General_CS_AS

選択トップ 1 の CuryID GLTran から先 UPPER(CuryID) <> CuryID 部 Latin1_General_CS_AS

選択 1 の CuryID のトップ CuryAcct からを UPPER(CuryID) <> CuryID 部 Latin1_General_CS_AS



修正します2964624.

警告: この記事は自動翻訳されています

プロパティ

文書番号:2931999 - 最終更新日: 06/15/2015 13:08:00 - リビジョン: 6.0

Microsoft Dynamics SL 2011 Service Pack 2, Microsoft Dynamics SL 2011 Service Pack 1, Microsoft Dynamics SL 2011 Feature Pack 1, Microsoft Dynamics SL 2011

  • kbmbsmigrate kbsurveynew kbmt KB2931999 KbMtja
フィードバック