データベース例外:テーブル コミット時のエラー

バージョン 2

    検証済みバージョン

    LANDESK Management Suite 9.6

    LANDESK Management Suite 2016.x


     

    概要

    この文書は、コアサーバーのイベントビューアーに出力される "データベース例外" エラー:

    (イベントID : 4100、ソース:LANDesk Inventory Server) の解決方法について解説しています。

     

    Database exception: EXAMPLE.scn, LDInv.dll

    -2147467259

    Data provider or other service returned an E_FAIL status.

     

    Error committing on table :   DATA PROVIDER OR OTHER SERVICE RETURNED AN E_FAIL STATUS.

    Increased column size might be necessary, Thread ID:

     

     

    原因

     

    インベントリ スキャンはコアサーバーへ属性情報を含むデータを送信しますが、それらのデータの中に、

    該当するデータベース スキーマ内の属性カラム サイズの最大文字数を超えるデータが存在しているためです。

     

    解決方法

     

    この問題を解決するためには、関連する属性カラム サイズ (VARCHAR) の拡張を行う必要があります。

    これはコアサーバーのデータベース スキーマ設定 (Datamart.xml) の修正を行う必要がありますが、

    "CoreDBUtil.exe" を用いて上書きすることもできます。

     

    対象となる SQL Server データベースがクラスタリングを使用している場合、対象となる

    カラム サイズの修正は手動で行う必要があります。

     

     

    データベース スキーマの更新

     

    データベース スキーマは DataMart.xml ファイルによって設定されています。

    修正を行った後、 "CoreDBUtil.exe" を用いてデータベースの変更を行うことが可能です。

    "DataMart.xml" 及び "CoreDBUtil.exe" はコアサーバーがインストールされているディレクトリ

    (Program Files\LANDesk\ManagementSuite) に格納されています。

     

    データベース スキーマ設定の更新

     

    1. "DataMart.xml" ファイルをメモ帳もしくはそれと同等のテキスト エディターで開きます。

     

    2. 全ての関連するカラムの "VARCHAR" 値を "VARCHAR(MAX)" に変更します。

     

    修正を行うテーブル / カラム名

    テーブル名カラム名修正内容
    EnvironSettingsName<column name="Name" type="VARCHAR(MAX)" null="No" displayName="Name" PK="Yes" />
    EnvironSettingsValueString<column name="ValueString" type="VARCHAR(MAX)" displayName="Value" />
    PeripheralAdaptersType<column name="Type" type="VARCHAR(MAX)" displayName="Type" />
    PrinterVersion<column name="Version" type="VARCHAR(MAX)" displayName="Version" />
    ServicesPath<column name="Path" type="VARCHAR(MAX)" displayName="Path" />
    ServicesDescription<column name="Description" type="VARCHAR(MAX)" displayName="Description" />
    VideoDriverName<column name="DriverName" type="VARCHAR(MAX)" displayName="Driver Name" />

     

    3. "Datamart.xml" ファイルを保存します。

     

    4. データベースの変更内容を更新します。

     

    設定変更内容の更新

    1. "LANDesk Inventory Server" サービスを停止します。

     

    2. エクスプローラー等で "Program Files\LANDesk\ManagementSuite" フォルダを開きます。

     

    3. "CoreDBUtil.exe" を管理者権限で起動します。

     

    4. "コンポーネントのビルド" を選択します。

    47503-01.png47503-02.png

     

    5. 完了したら "閉じる" を選択します。

    47503-03.png

    6. "LANDesk Inventory Server" サービスを再起動します。

    7. 再実行されたスキャン結果を確認し、問題が解消していることを確認します。

     

     

    SQL レプリケーションを使用後に CoreDBUtil.exe を実行した場合、正常に完了しない場合があります。

    その際はテクニカルサポートへお問い合わせください。

     

     

    データベース テーブル スキーマの手動によるアップデート

    データベースが SQL Server フェール オーバー クラスタリングを使用している場合、 "CoreDBUtil.exe" の実行時に

    変更処理に失敗する場合があります。

    この場合、SQL Management Studio 等を使用して、 LDMS データベースの関連するテーブルのカラムを

    手動で変更する必要があります。

     

    1. データベース テーブルの変更を保存できるよう設定を変更します。

        ツール(T) - オプション(O) - デザイナー - テーブル デザイナーおよびデータベース デザイナー を開き、

        "テーブルの再作成を必要とする変更を保存できないようにする(S)" のチェックを外す

     

    47503-04.png

     

    47503-05.png

     

    2. 対象となるカラムの値を変更するために、以下の SQL クエリーを実行します。

     

    alter table environsettings alter column name nvarchar(max);
    alter table environsettings alter column valuestring nvarchar(max);
    alter table peripheraladapters alter column type nvarchar(max);
    alter table printer alter column version nvarchar(max);
    alter table services alter column path nvarchar(max);
    alter table services alter column description nvarchar(max);
    alter table video alter column drivername nvarchar(max);
    

     

    データベース テーブル スキーマのアップデートを行った際は、あわせて "Datamart.xml" の編集も

    上記で行っている内容と同様に行う必要があります。

    行わなかった場合、 "CoreDBUtil.exe" によって上書きされる可能性があるためです。

     

    再実行されたスキャン結果を確認し、問題が解消していることを確認します。

     

     

    解決結果の確認

     

    意図通りに変更内容が適用されているかを確認するには、失敗したインベントリ スキャンを再実行することで可能です。

     

    1. "Program Files\LANDesk\ManagementSuite\ldscan\ErrorScan" フォルダへ移動します。

    2. 24時間以内に更新されたファイルを全て "Program Files\LANDesk\ManagementSuite\ldscan\" へ移動します。

        エラー復旧後、同期に失敗したファイルは "ErrorScan" フォルダへ再び格納されます。

        データベース テーブル スキーマのアップデート後に再度 "ErrorScan" フォルダへスキャン ファイルが格納される場合は

        Windows イベント ビューアーを開き、原因を確認してください。

     

        同期に失敗したファイルが "ErrorScan" フォルダへ格納される場合、Windows イベント ビューアーに警告メッセージが

        出力されます。

     

    この復旧手順を実行したにも関わらず、何度も同期に失敗して Windows イベント ビューアーに同じ警告メッセージが

    出力されてしまう場合、"\Program Files\LANDesk\ManagementSuite\log\CoreDbUtil.exe.log" ログファイルを開き、

    原因について詳細を確認してください。

     

     

    英語版 :

    https://community.ivanti.com/docs/DOC-41927