當您嘗試在 Microsoft Dynamics GP 中張貼分析會計交易或儲存主要記錄時發生錯誤:無法在物件 'AAGXXXXX' 中插入重複的密鑰
本文提供當您在 Microsoft Dynamics GP 中張貼分析會計交易或儲存 Master 記錄時所發生錯誤的解決方案。
適用于: Microsoft Dynamics GP
原始 KB 編號: 897280
徵狀
當您嘗試在 Microsoft Dynamics GP 中張貼分析會計交易時,可能會收到下列錯誤訊息:
[Microsoft][ODBC SQL Server Driver][SQL Server]違反 PRIMARY KEY 限制 'PKAAG30000',無法在物件 'AAG30003' 中插入重複的索引鍵
注意事項
在此錯誤訊息 中,AAG30000 是數據表的佔位元。 “contraint” 這個字拼錯「條件約束」。
您收到的錯誤訊息可能包含下列其中一個資料表:
- 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 腳本來更新大部分 AA 資料表AAG00102中的值
您可以使用下列鏈接下載 SQL 腳本,並在 SQL Server Management Studio 中針對公司資料庫執行,以自動更新與 AA 資料表中最後一個使用過的值相較之下,儲存在AAG00102數據表中的下一個可用號碼。 文稿會檢視下列資料表:
AAG10000、AAG20000、AAG30000、AAG00201、AAG00400、AAG00401、AAG00500、AAG00600、AAG00900 和 AAG00903
因此,它會查看大部分的 AA 數據表,但不是所有數據表,而不是數列的子數據表。
方法 2:手動方法,一次針對一個 AA 數據表研究及更新AAG00102中的值
啟動 SQL Server Management Studio。 若要這樣做,請按兩下 [開始],指向 [程式],指向 [Microsoft SQL Server 版本],然後按兩下 [SQL Server Management Studio]。
在 [連線到 SQL Server] 視窗中,使用您的 sa 密碼登入 SQL Server Management Studio。
按兩下 [新增查詢] 圖示以開啟查詢視窗,然後在查詢視窗中複製或輸入下列腳本。 針對公司資料庫執行 。
select MAX (aaGLHdrID) from AAG30000 */Insert in the appropriate column/table for the aaGLHdrID and AAG30000 placeholders in the script.
請注意查詢結果,其會顯示上次在數據表中使用的最高值。 (如果數據表有子數據表,請務必檢查這些數據表中最後使用的最高值。)
在查詢視窗中輸入下列腳本,並針對 Dynamics 資料庫執行:
select * from AAG00102 where CMPANYID = 'nnn'
在此查詢中,將 nnn 佔位元取代為公司識別碼。 若要尋找公司識別碼,請在查詢視窗中輸入下列查詢。
select * from SY01500
選取視窗頂端清單中的 DYNAMICS 資料庫,然後按 F5。
確認 aaTableID 值為 30000 (或適當數據表) 的 aaRowID 欄位中的值等於或大於您在步驟 4 中記下的值。
使用下列腳本來更新值。 若要這樣做,請在查詢視窗中輸入下列腳本,然後按 F5 鍵。
update aag00102 set aaROWID = 'yyyy' where aaTableID = 30000 and CMPANYID = 'zzz'
注意事項
在此腳本中,將 yyyy 佔位元取代為您在步驟4中記下的值。 將 zzz 佔位元元取代為公司標識碼。 也請將 aaTableID 取代為適當的數據表。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應