Microsoft Management Reporter 2012 データベースを復元するときに "操作を完了できませんでした" エラー

この記事では、Microsoft Management Reporter 2012 データベースを復元するときに発生する可能性がある 操作を完了できませんでした の解決策について説明します。

適用対象: Microsoft Management Reporter 2012、Microsoft Dynamics AX 2009、Microsoft Dynamics SL 2011、Microsoft Dynamics GP
元の KB 番号: 2744330

現象

Management Reporter 2012 データベースを復元すると、Management Reporter 2012 レポート デザイナーで次のエラーが表示される場合があります。

サーバーでエラーが発生したため、操作を完了できませんでした。

Windows イベント ビューアー アプリケーション ログで受信したエラー メッセージ:

System.Data.SqlClient.SqlException (0x80131904): この操作を実行する前に、データベースにマスター キーを作成するか、セッションでマスター キーを開いてください。'pEncryptGeneralUserData' プロシージャは NULL の状態を返そうとしましたが、これは許可されていません。 代わりに、状態 0 が返されます。

原因

Management Reporter 2012 データベースは、サーバー固有の情報を使用して暗号化され、追加の手順なしでバックアップまたは復元することはできません。

解決方法

Management Reporter 2012 データベースを移動するプロセスは次のとおりです。

注:

動的データマート (DDM) データベースを使用する Management Reporter 2012 プロバイダーを使用している場合は、DDM データベースを移動しないでください。 代わりに、ここでのプロセスを使用して新しいデータベースが作成されます。

  1. Management Reporter 2012 構成コンソールを起動します。

  2. [ 管理レポーター サービス] を選択します。

  3. [データベース接続] 見出しの下に一覧表示されているデータベースの名前を記録します。 データベース名は、SQL サーバー名の後に一覧表示されます。 例: SQLServer (Database)

  4. 使用するサービス アカウントの名前を記録します。

  5. SQL Server Management Studioにサインインします。

  6. このトピックで前に記録した Management Reporter 2012 データベースをバックアップします。

  7. Management Reporter 2012 レポート デザイナーを開始します。

  8. 各文書パーツ グループをエクスポートします。 エラーが発生した場合は、レポートを再インポートできます。 これを行うには、次の手順に従います。

    1. [ 会社 ] メニューの [ 文書パーツ グループ] を選択します。

    2. エクスポートする文書パーツ グループを選択します。

    3. [エクスポート] を選択します。

    4. [レポート定義]、[行定義]、[列定義]、[レポート ツリー定義]タブでエクスポートするすべての構成要素を選択します。 また、すべてのディメンション値セットを選択します。

    5. [エクスポート] を選択します。

    6. エクスポート ファイルを保存する場所を .tdbx 選択します。

      注:

      Windows Server 2008 サーバーの既定のパスは C:\Users\username>\<Documents\Management Reporter\Building Block Groups です

    7. [文書パーツ グループ] ウィンドウで [ 閉じる ] を選択します。

  9. Exit Management Reporter 2012 レポート デザイナー。

  10. Management Reporter 2012 構成コンソールを起動します。

  11. ナビゲーション バーで、SQL サーバーの名前を選択します。

  12. [削除] を選択して ERP 統合を削除します。

  13. プロンプトで [はい] を選択します。ERP 統合を削除しますか?

  14. ナビゲーション バーで、[ 管理レポーター サービス] を選択します。

  15. [ プロセス サービスの削除] を選択します

  16. プロンプトで [はい] を選択します。"Management Reporter 2012 Process Service" を削除しますか?

  17. [ アプリケーション サービスの削除] を選択します

  18. プロンプトで [はい] を選択します。"Management Reporter 2012 Application Service" を削除しますか?

  19. SQL Server Management Studioにサインインします。

  20. このトピックで前に記録した Management Reporter 2012 データベースをバックアップします。

  21. 新しい SQL サーバーでSQL Server Management Studioにサインインします。

  22. 新しい SQL サーバーで Management Reporter 2012 データベースを復元します。

  23. Management Reporter 2012 サービス アカウントに、SQL サーバーと新しいデータベースに対する適切なアクセス許可があることを確認します。 「Management Reporter 2012 for Microsoft Dynamics ERP: インストール、移行、および構成ガイド」の「Management Reporter インストール ガイド」を参照してください。

  24. こちらの手順を使用して、新しい SQL サーバーの Management Reporter 2012 データベースに対して次のスクリプトを実行します。

    --////////////////////////////////////////////////////////////////
    -- 
    -- Script Instructions:
    -- 
    -- 1. Update the line in the following code, starting with 'CREATE MASTER KEY ENCRYPTION BY PASSWORD', to contain the 
    -- Master key you wish to use. The master key must meet the Windows password policy 
    -- requirements of the computer that is running the instance of SQL Server.
    --
    -- 2. Run this script against the Management Reporter 2012 database. This script
    -- will output a message if it does not detect the Management Reporter 2012 database.
    --
    --////////////////////////////////////////////////////////////////
    
    IF EXISTS (SELECT Name FROM sys.tables WHERE Name = 'ControlReportSchedule')
     BEGIN
     IF EXISTS (SELECT TOP(1) name FROM sys.symmetric_keys WHERE name = 'GeneralUserSymmetricKey')
     DROP SYMMETRIC KEY GeneralUserSymmetricKey
    
    IF EXISTS (SELECT TOP(1) name FROM sys.certificates WHERE name = 'GeneralUserCertificate')
     DROP CERTIFICATE GeneralUserCertificate
    
    IF EXISTS (SELECT TOP(1) name FROM sys.symmetric_keys WHERE name = 'ConnectorServiceSymmetricKey')
     DROP SYMMETRIC KEY ConnectorServiceSymmetricKey
    
    IF EXISTS (SELECT TOP(1) name FROM sys.certificates WHERE name = 'ConnectorServiceCertificate') 
     DROP CERTIFICATE ConnectorServiceCertificate
    
    IF EXISTS (SELECT TOP(1) name FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##')
     DROP MASTER KEY
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Access!23'
     -- NOTE Where Access!23 is your actual password
    
    CREATE CERTIFICATE [ConnectorServiceCertificate]
     AUTHORIZATION [dbo]
     WITH SUBJECT = N'Certificate for symmetric key encryption - for use by the connector service.'
    
    CREATE CERTIFICATE [GeneralUserCertificate]
     AUTHORIZATION [dbo]
     WITH SUBJECT = N'Certificate for access symmetric keys - for use by users assigned to the GeneralUser Role.'
    
    CREATE SYMMETRIC KEY [ConnectorServiceSymmetricKey]
     AUTHORIZATION [dbo]
     WITH ALGORITHM = AES_256
     ENCRYPTION BY CERTIFICATE [ConnectorServiceCertificate]
    
    CREATE SYMMETRIC KEY [GeneralUserSymmetricKey]
     AUTHORIZATION [dbo]
     WITH ALGORITHM = AES_256
     ENCRYPTION BY CERTIFICATE [GeneralUserCertificate]
    
    IF NOT EXISTS (SELECT TOP(1) name FROM sys.database_principals WHERE name='GeneralUser') 
     BEGIN 
     CREATE ROLE [GeneralUser]
     AUTHORIZATION [dbo]
     END 
    
    GRANT CONTROL ON CERTIFICATE::[GeneralUserCertificate] TO [GeneralUser]
     GRANT VIEW DEFINITION on SYMMETRIC KEY::[GeneralUserSymmetricKey] TO [GeneralUser]
     GRANT CONTROL ON CERTIFICATE::[ConnectorServiceCertificate] TO [GeneralUser]
     GRANT VIEW DEFINITION on SYMMETRIC KEY::[ConnectorServiceSymmetricKey] TO [GeneralUser] 
     UPDATE Connector.Adapter
     SET Settings.modify('declare namespace x="https://www.microsoft.com/2009/Dynamics/Integration";
     replace value of 
     (/SettingsCollection/x:ArrayOfSettingsValue/x:SettingsValue[x:Attributes="Password"]/x:Value/text())[1] 
     with ""')
     UPDATE Connector.MapCategoryAdapterSettings
     SET Settings.modify('declare namespace x="https://www.microsoft.com/2009/Dynamics/Integration";
     replace value of 
    (/SettingsCollection/x:ArrayOfSettingsValue/x:SettingsValue[x:Attributes="Password"]/x:Value/text())[1] 
     with ""')
     END
    ELSE
     BEGIN
     PRINT 'WARNING: Incorrect database selected.'
     Print 'Execute script against the Management Reporter 2012 database.'
     PRINT 'This can be found in the Management Reporter 2012 Configuration Console.'
     END
    

    注:

    Microsoft Dynamics AX 2012 で Management Reporter 2012 を使用している場合は、次の SQL ステートメントも実行して、Microsoft Management Reporter 2012 レポート デザイナーのorganization階層をリセットします。 この情報は、新しい統合が有効になると Microsoft Dynamics AX から取得されます。

    delete ControlTreeMaster where FolderID in (select FolderID from ControlFolderIntegration)
    delete ControlFolder where ID in (select FolderID from ControlFolderIntegration)
    delete ControlFolderIntegration
    
  25. Microsoft Management Reporter 2012 構成コンソールを起動します。

  26. [ ファイル ] メニューの [ 構成] を選択します。

  27. 管理レポーター アプリケーション サービスと管理レポーター プロセス サービスの横にチェックを配置します。

  28. [次へ] を選択します。

  29. [前提条件の検証] 画面に記載されている問題を修正し、[ 次へ] を選択します。

  30. [サービス アカウント] セクションで、前に記録したサービス アカウントの名前を入力します。 また、サービス アカウントのパスワードも入力します。

  31. [データベースの構成] セクションで、[既存のデータベースに接続する] にチェックを配置します。

  32. [データベース サーバー] フィールドに新しいSQL Serverの名前を入力します。

  33. Windows 認証を使用するか、SQL で認証されたユーザー名とパスワードを入力します。

  34. [データベース] ドロップダウンで、新しく復元された Management Reporter 2012 データベースの名前を選択します。

  35. [Application Service] セクションで、アプリケーション サービスを実行するポート番号を入力します。 サーバーで Windows ファイアウォールが有効になっている場合は、[Windows ファイアウォールでこのポートを開く] の横にチェックを配置します。

  36. [次へ] を選択します。

  37. [構成] を選択します。

  38. プロセスが完了したら、[管理レポーターの構成] 画面で [ 閉じる] を選択します。

  39. [ ファイル ] メニューの [ 構成] を選択します。

  40. 環境に適したチェックを ERP の横に配置します。

  41. [次へ] を選択します。

  42. Management Reporter 2012 for Microsoft Dynamics ERP: インストール、移行、および構成ガイド」の適切なガイドを使用して、環境の ERP の指示に従います。

    注:

    動的データ・マート (DDM) データベースを使用する Management Reporter 2012 プロバイダーを使用する場合は、DDM データベースを移動しないでください。 代わりに、新しいデータ マート データベースを作成します。

  43. 統合が正常に作成されたら、[ 閉じる] を選択します。 [ 統合を有効にする] を選択する前に、以下の手順を完了する必要があります。

  44. Management Reporter 2012 構成コンソールで、データ マート統合の名前を選択します。

  45. [Dynamics XX 資格情報の更新] を選択します。XX は AX、GP、SL、または NAV (Dynamics ERP に応じて) です。

  46. Dynamics ERP データベースに接続するための適切な資格情報を入力し、[OK] を選択 します

  47. [ データ マート資格情報の更新] を選択します

  48. データ マート データベースの更新に使用する適切な資格情報を入力し、[OK] を選択 します

  49. Management Reporter 2012 構成コンソールで、Management Reporter 2012 Application Service と Management Reporter 2012 Process Service を停止します。

  50. Management Reporter 2012 構成コンソールで、Management Reporter 2012 Application Service と Management Reporter 2012 Process Service を起動します。

  51. Management Reporter 2012 構成コンソールで、データ マート統合の名前を選択します。

  52. [ 統合を有効にする] を選択します