當您嘗試張貼分析的帳戶處理的交易,或儲存一張母片中,記錄在 [Microsoft 動態 GP 的錯誤訊息: 「 無法在物件 'AAGXXXXX' 中插入重複的索引鍵 」

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:897280
徵狀
當您嘗試在 [Microsoft 動態 GP 張貼分析的帳戶處理的交易時,您可能會收到下列錯誤訊息:

[] Microsoft[ODBC SQL Server 驅動程式][SQL Server]主索引鍵條件約束的違規情形 'PKAAG30000',無法在物件中插入重複的索引鍵 'AAG30003'

附註
在這個錯誤訊息中, AAG30000 為資料表的預留位置。「 條件約束 」 這個字是找到拼字錯誤的 「 條件約束失敗。

您會收到實際的錯誤訊息可能包含下表其中一項:
  • AAG00103
  • AAG00500
  • AAG00600
  • AAG00601
  • AAG00602
  • AAG00603
  • AAG00400
  • AAG00401
  • AAG00201
  • AAG00310
  • AAG00900
  • AAG00901
  • AAG00902
  • AAG00903
  • AAG10000
  • AAG10001
  • AAG10002
  • AAG10003
  • AAG20000
  • AAG20001
  • AAG20002
  • AAG20003
  • AAG30000
  • AAG30001
  • AAG30002
  • AAG30003
發生的原因
適用的資料表 (或一系列的子資料表) 中已經使用過此 AAG00102 資料表中的資料表 (aaTableID) 所指示的下一個可用值 (aaRowID),就會發生這個問題。

例如,AAG00102 資料表中 '30000' 的資料表會查看 AAG30000、 AAG30001、 AAG30002 和 AAG30003 資料表,因此請小心檢查適用的資料表的數列中的所有資料表。



解決方案
要解決這個問題,請使用下面下列方法之一來比較 AA 表格 (與子資料表) 中的最高的使用的值對儲存在 AAG00102 資料表中的下一個可用的值。

附註 您依照本文中的說明之前,請確定您有完整的備份副本,您可以在發生問題時還原的資料庫。

方法 1-使用 SQL 指令碼,以更新在 AAG00102 中大部分的防空砲火資料表中的值

您可以下載 SQL 指令碼使用下面的連結,並針對這個公司資料庫中 SQL Server Management Studio 執行它來自動更新下一個可用號碼儲存在 AAG00102 資料表,因為比較的最後一個值資料表中用 AA。指令碼會查看下列的資料表: AAG10000、 AAG20000、 AAG30000、 AAG00201、 AAG00400、 AAG00401、 AAG00500、 AAG00600、 AAG00900 及 AAG00903。因此它會檢查大部分的防空砲火資料表名稱,但並非所有,並不針對一系列子資料表。若要取得指令碼,請造訪下列 Microsoft 網站:

https://mbs.microsoft.com/Files/customer/GP/Downloads/ServicePacks/AA_Update_AAG00102.sql

方法 2-AAG00102 中的參考資料和更新值人工的方法一次一個 AA 資料表

  1. 開啟 SQL Server Management Studio。若要這樣做,請按一下 [開始],指向 [程式集、 指向Microsoft SQL Server 版本,,然後按一下 [ SQL Server Management Studio
  2. 在 [連線到 SQL Server ] 視窗中,登入 SQL Server Management Studio 使用 sa 密碼。
  3. 按一下 新的查詢 若要開啟 [查詢] 視窗和複製,或在 [查詢] 視窗中輸入下列指令碼的圖示。針對這個公司資料庫中執行。
    select MAX (aaGLHdrID) from AAG30000*/Insert in the appropriate column/table for the aaGLHdrID and AAG30000 placeholders in the script.
  4. 請注意查詢結果會顯示在資料表中的上一次使用的最大值。(如果資料表有子資料表,請確定檢查最高上次值中使用那些也。)
  5. 在 [查詢] 視窗中輸入下列指令碼以及執行對動態資料庫:
    select * from AAG00102 where CMPANYID = 'nnn'
    附註 在這個查詢中,取代 nnn 版面配置區公司 id。若要尋找公司 ID,請在 [查詢] 視窗中輸入下列的查詢。
    select * from SY01500
    選取上方的視窗] 清單中的動態資料庫,然後按 F5。
  6. 請確認30000 (或適當的資料表) 的aaTableID值的 [ aaRowID ] 欄位中的值等於或大於您在步驟 4 中記下的值。
  7. 您可以使用下列的指令碼,更新的值。若要這麼做,請在 [查詢] 視窗中,鍵入下列指令碼,然後按 F5。
    update aag00102 set aaROWID = 'yyyy' where aaTableID = 30000 and CMPANYID = 'zzz'
    附註 在這個指令碼,取代 yyyy 以您在步驟 4 中記下的值的預留位置。取代 zzz 版面配置區公司 id。也使用適當的資料表來取代 aaTableID。
狀況說明
Microsoft 已確認這是<套用> 一節所列出的 Microsoft 產品的問題。

警告:本文為自動翻譯

內容

文章識別碼:897280 - 最後檢閱時間:10/23/2015 06:11:00 - 修訂: 0.5

Microsoft Dynamics GP 2015, Microsoft Dynamics GP 2013, Microsoft Dynamics GP 2010, Microsoft Dynamics GP 10.0

  • kberrmsg kbmbsmigrate kbbug kbmt KB897280 KbMtzh
意見反應