一、 概述
本文介紹 同步使用者 時一些注意事項及報錯。
二、次管無法新增/匯入使用者
次級管理者在部分情況下無法新增使用者,詳情如下表所示。
JAR包 | 使用者來源 | 現象 |
---|---|---|
2020-01-15 到 2020-11-02 | 未同步使用者 | 次級管理者只可見【新增使用者】、【匯入使用者】按鈕,不可見【同步使用者】按鈕。 |
開啓了同步使用者 | 次級管理者不可見【新增使用者】、【匯入使用者】、【同步使用者管理】按鈕,即使用者列表上方無按鈕。 | |
2020-11-02及以後 | 未同步使用者 | 次級管理者只可見【新增使用者】、【匯入使用者】按鈕,不可見【同步使用者】按鈕。 |
開啓了同步使用者 | 次級管理者只可見【新增使用者】、【匯入使用者】按鈕,不可見【同步使用者管理】按鈕。 |
三、同步資料集欄位不可選
問題描述:
建立的伺服器資料集可以預覽,但是在使用該資料集同步/匯入使用者時,沒有欄位可選,如下圖一所示。
原因分析&解決思路:
查看日誌,發現報錯:SQL ServerException:物件名' '無效。
檢查資料集的建立方式,例如儲存過程類的伺服器資料集,巢之後 SQL 執行失敗。
四、同步結果面板報錯
配置了 ID 列後會進行一些 ID 校驗以防入庫時沖突。此時出錯的資料也會列在結果面板中。下面羅列報錯情況。
1
ID 爲空。
報錯資訊如下圖一所示。
原因:勾選了 id 後,不允許出現 name 不為空,但是 id 為空的情況。
2
與原有 ID 沖突。
報錯資訊如下圖所示。
原因:勾選 ID 之後更改使用者名,但是不允許更改 ID,否則會報 ID 沖突的錯誤,比如原本 Alice 的 id 為 3,現在變動成 2 。
3
ID 與其他對象重複。
報錯資訊如下圖所示。
原因:如下圖所示,多個使用者名使用了一個 id 時報錯。
4
對應多個 ID。
報錯資訊如下圖所示。
原因:當一個使用者名卻有多個 id 時報此錯。
五、樹資料集構建失敗
當同步資料集為樹資料集時,往往會因為樹資料集構建問題導緻同步失敗,下面列舉各種情況。
注:名詞解釋
部門標記:構建樹資料集時選擇的原始標記欄位。
父部門標記:構建樹資料集時選擇的父標記欄位。
1
21300055-報表、DEC交互原始標記相同。
報錯資訊【報表、DEC交互原始標記相同】,如下圖1所示。
原因:樹資料集下,多個部門都用了一個部門標記,比如下圖中 DEC 交互,報表的 did 都為 a12。如下圖2所示。
2
21300056-報表有多個直接父部門。
報錯資訊【報表有多個直接父部門】,如下圖所示。
原因:一個部門有多個父部門標記,比如下圖中報表的 pid 有 a1,a2。
3
21300057-決策平台找不到對應父部門。
報錯資訊【樹構建失敗,決策平台找不到對應父部門】,如下圖1所示;
原因:如果父部門標記為空,那麼此部門就是根部門,如果不為空,且父部門標記找不到對應的部門,則報錯。
如下圖2所示,決策平台的 pid 為 a3,但是沒有任何部門的 did 為 a3,也即沒有該父部門。
注:同步使用者資料集時,若伺服器資料集為 樹資料集 ,頂層機構的父機構應為空值。
4
21300058-報表有多個原始标記。
報錯資訊【報表有多個原始標記】,如下圖1所示。
原因:如果部門名相同,且父部門標記相同,那麼說明這就是同一個部門,如果他們的部門標記不同,則報錯,如下圖中報表的 did 有兩個:a13,a12。
5
21300059-父子結構死循環。
報錯資訊【決策報表,帆軟軟體,DEC研發構成父子結構死循環】,如下圖1所示。
原因:如果部門 111 的父標記指向部門 11 ,部門 11 的父標記指向部門 1 ,部門 1 的父標記又指向部門 111 ,構成了環,則報錯。
如下圖2中帆軟軟體的父標記為 a111,指向 DEC 研發,決策平台的 pid 為 a1,指向帆軟軟體,DEC 研發的 pid 為 a11,指向決策平台。
6
21300063-名稱與其他來源對象重複。
報錯資訊【名稱與其他來源物件重複】,如下圖所示。
原因:匯入樹資料集的部門中存在和同步部門重複的資料,如先同步了樹資料集 A,再匯入樹資料集 A 則會出現此報錯。
7
21300064-ID與其他來源對象重複。
報錯資訊【ID與其他來源物件重複】,如下圖所示。
原因:平台有內建部門2,首次同步一樹資料集,選擇保留權限更新,資料源中一同步部門1和內建部門2的ID相同,但名稱不同,同步後會報錯。
六、ID 校驗失敗
樹資料集情況下,如果還勾選了部門 id,且部門 id 列並非部門標記列,還會做 id 校驗工作,會導緻全局失敗。以下所有範例中部門標記列為 did,父部門標記列為 pid,部門 id 列為 depId。
1
21300054-部門标記值與部門ID不一緻。
報錯資訊【部門標記值與部門ID不一緻】,如下圖所示。
原因:如果部門標記為純數字,比如 11,111,會直接作為 id 項插入到 finedb 的部門表中,此時如果平台又勾選了其他列作為部門 id,且部門標記值和勾選的部門 id 不一樣,則報錯。建議當資料源當部門標記為純數字時,使用 sql 語句的字串連結一個英文字母。
注:2020-08-03 及之後的 JAR ,該錯誤碼将不會出現。
2
21300053-ID爲空。
報錯資訊【ID為空】,如下圖1所示。
原因:樹資料集情況下,勾選部門 id 後如果部門 id 為空,則直接全局報錯。如下圖2所示。
3
21300051-報表ID與其他對象重複。
報錯資訊【報表ID與其他物件重複】,如下圖1所示。
原因:帆軟軟體-報表,與帆軟軟體-決策平台使用了相同的部門 id。如下圖2所示。
4
21300050-報表對應多個ID。
報錯資訊【報表對應多個ID】如下圖1所示。
原因:當部門存在多個部門 id 時會報此錯,如上圖中帆軟軟體-報表有 a12,a15 兩個部門 id。如下圖2所示。
5
21300052-決策平台和原有ID沖突。
報錯資訊【決策平台和原有ID沖突】,如下圖所示。
原因:部門 id 發生改變了,會報錯與原有部門 id 沖突。
注:2020-06-08 及之後的 JAR ,該錯誤碼将不會出現。
七、21300031-達到設定的中斷值
報錯資訊【21300031 - 本次同步使用者數量將減少XX%(XX個),達到設定的中斷值XX%。請檢查資料源資料是否正常,或暫時關閉"異常資料中斷同步"功能。】如下圖1所示。
原因:同步使用者高度依賴資料源,若資料源出現問題,例如被惡意清空資料庫表,會導緻同步到系統中的使用者被清空,操作無法逆轉。因此 FineReport 提供同步熔斷策略。10.0.18 及之後版本的報表工程,新增【異常資料中斷同步】按鈕。
管理者開啓【異常資料中斷同步】後,可設定使用者數量減少達到X%,停止同步。X為1-100的正整數。
例如系統中原有100個同步使用者(不包含手動新增/匯入的使用者數),設定為30%,即同步減少30(100*30%)個使用者及以上,就會停止本次同步。
八、21307213-非法節點
安裝並使用插件【同步LDAP域使用者】後同步使用者失敗,報錯資訊:
【失敗原因:21307213-非法節點
使用者在使用者下:
user1-->使用者下使用者
部門在使用者下:
user2-->cn=使用者下部門,cn=xxx,cn=xx,cn=roles,o=fanruan,dc=fr,dc=com
角色在使用者下:
user3-->使用者下角色】
如下圖所示。
原因:LDAP伺服器下的資料,存在一些使用者資料節點非葉子節點,其下還存在使用者 / 部門 / 角色資料節點,同步時檢查資料結構會報錯並終止同步LDAP使用者任務。