"ディレクトリ データ型をネイティブ DS データ型と変換できません" エラー

この記事では、「ディレクトリ データ型をネイティブ DS データ型に変換したり、ネイティブ DS データ型から変換したりすることはできません」というエラーを修正するのに役立ちます。

適用対象: Windows Server 2019、Windows Server 2016、Windows Server 2012 R2
元の KB 番号: 907462

現象

Windows で Active Directory ディレクトリ サービスの情報を使用するアプリケーションを実行または管理しています。 アプリケーションがリンクされた属性の情報を使用すると、エラーが発生する可能性があります。 たとえば、次のエラーが表示される場合があります。

ディレクトリ データ型をネイティブ DS データ型から/ に変換することはできません。

この場合、LDIFDE ユーティリティ (Ldifde.exe) を使用して影響を受けるオブジェクトをエクスポートすると、属性が一覧表示されます。 ただし、属性には値がありません。

これは、値が長い場合の予期される動作である可能性があります。 ただし、出力の次の行には次の属性があります。 グループとその managedBy 属性の場合、出力は次のようになります。
...
showInAddressBook: <アドレス帳オブジェクト DN>
Managedby:
legacyExchangeDN: <X500 name>
groupType: -2147483640
...

RootDSE コマンド動詞 dumpdatabase を使用したデータベース ダンプでは、影響を受けるグループが次のように表示されます。

38661 29827 1 1790 true - - 4 3 Group-DN Group-DN - 655368 6d03f309-ded2-41d5-9794-081d40343876 4
objectclass: 655368, 65536
DNT Base BDNT DelTime DeactiveTime USNChanged NCDNT Data
38661 1 38662 - - 55247898 1790 -
38661 36 2 - - - - -

リンク属性 ID は常に 36 で、リンク パートナーは常に 2 です。
データベースをダンプする方法については、「 Active Directory のオンライン Dbdump 機能を使用する方法」を参照してください。

原因

アプリケーションは、Active Directory データベースの内部ルート オブジェクトを参照するオブジェクト リンクを追加できます。 このオブジェクトには、アプリケーションに使用できる名前やその他のプロパティはありません。 そのため、クライアント アプリケーションには、問題の原因を示さないエラー メッセージが表示されます。

解決方法

Service Pack 1 で Windows Server 2003 を実行しているドメイン コントローラーを使用する場合、問題は発生しません。 ただし、この無効なリンクを持つオブジェクトはデータベースに残っています。 NTDS を検索すると、ドメイン コントローラーの影響を受けるグループを見つけることができます。DMP ファイルを次に示します。

findstr /i /c:" 36 2 - - " ntds.dmp
38661 36 2 - - - - -

Windows Server 2003:

属性を削除しても問題を解決できません。 属性を削除すると、Application Directory Services ログに次のエラーが記録されます。

イベントの種類: エラー
イベント ソース: NTDS レプリケーション
イベント カテゴリ: レプリケーション
イベント ID: 1694
説明:
Active Directory では、次のソース ドメイン コントローラーから受け取った属性値の変更で、次のオブジェクトを更新できませんでした。 これは、ローカル ドメイン コントローラー上の Active Directory への変更の適用中にエラーが発生したためです。
オブジェクト:
<グループ DN>
オブジェクト GUID:
<GUID>
ソース ドメイン コントローラー:
<GUID ベースの DC 名>
属性:
Managedby:
属性値:
[]
属性値 GUID:
00000000-0000-0000-0000-000000000000
存在:
0
この操作は、次回のスケジュールされたレプリケーションで再試行されます。 ローカル ドメイン コントローラーとソース ドメイン コントローラーの同期は、更新の問題が修正されるまでブロックされます。
追加データ
エラー値:
レプリケーション システムで内部エラーが発生しました。

このエラーがログに記録された場合、オブジェクトは壊れた状態になります。 元の状態を実現したり、オブジェクトを削除したりするには、オブジェクトに対して権限のある復元のみを実行できます。 この動作を示すオブジェクトを修復するには、LDIFDE ユーティリティを使用してオブジェクトを削除して再構築することをお勧めします。

注意

オブジェクトを削除すると、すべてのバック リンクが削除されます。

objectSid 属性や SidHistory 属性など、値を設定できない特定の属性を保持する必要がある場合は、オブジェクトを削除して元に戻します。 (Windows Server 2003 Service Pack 1 では、オブジェクトを削除するときに SidHistory 属性が保持されます)。オブジェクトを削除して元に戻すときは、セマンティック チェッカーを実行する必要はありません。

ただし、現在、属性とバックリンクを回復するためのツールは存在しません。 グループ メンバーシップを復元するには、Groupadd.exe ツールを使用します。 詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示します。

840001 Active Directory で削除されたユーザー アカウントとそのグループ メンバーシップを復元する方法

Microsoft プロビジョニング システムを使用する場合は、システムを使用して属性とバックリンクを回復できます。

一部のバックアップおよび回復アプリケーションでは、これらの問題のある属性を削除するより便利な方法が提供される場合があります。 アプリケーションでは、復元操作中に属性を選択できるようにする必要があります。 たとえば、アプリケーションでは、削除されたオブジェクトを復元するときに managedBy 属性を除外できるようにする必要があります。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。 この問題は、Microsoft Windows Server 2003 Service Pack 1 で最初に修正されました。