Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)

[SCOM 2012 R2] Déplacer la base de données

SCOM2012

Il y a peu de temps j’ai du déplacer les bases de données de SCOM d’un serveur à un autre. Le nom du nouveau serveur de la base de données était différent de l’ancien (SQL01 pour l’ancien et SQL02 pour le nouveau). Pour informations, cette migration a été effectuée sous SCOM 2012 R2, il se peut donc qu’il y ait quelques changements suivant votre version.

J’ai trouvé cette procédure sur TechNet qui permet d’effectuer l’opération pour la base de données opérationnelle et celle-ci pour la Data Warehouse.

Dans un premier temps, il faut arrêter les services SCOM suivants pour SCOM 2012 SP1 :

  • System Center Data Access Service
  • System Center Management
  • System Center Management Configuration

Dans mon cas, SCOM 2012 R2 :

  • Microsoft Monitoring Agent
  • System Center Data Access Service
  • System Center Management Configuration

Pour plus d’informations sur les différences de nom entre les service : http://stefanroth.net/2013/07/01/quick-post-scom-2012-r2-new-windows-service-names/

Il faut ensuite créer une sauvegarde FULL des bases de données à migrer (OperationsManager & OperationsManagerDW). J’ai effectué ces sauvegardes avec SQL Server Management Studio (http://technet.microsoft.com/en-us/library/ms187510.aspx). Une fois les sauvegardes terminées, il faut les déplacer sur le nouveau serveur de base de données, dans mon cas SQL02. Il faut ensuite restaurer ces bases, sur le nouveau serveur. J’ai de nouveau effectué cette opération avec SQL Server Management Studio (http://technet.microsoft.com/en-us/library/ms177429.aspx).

Il faut maintenant retourner sur le serveur SCOM pour modifier la base de registre. N’oubliez pas d’effectuer une sauvegarde de la clé que vous allez modifier. Dans la console éditeur de registre, déplacez-vous jusqu’à la clé suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup

Ici, il faut modifier les clés suivantes avec le nouveau nom de votre serveur. Attention, si votre serveur contient plusieurs instances, vous devrez nommer sous la forme ServerName\Instance :

  • DatabaseServerName
  • DataWarehouseDBServerName

image

Modifiez également la clé Reporting avec le nom DWDBInstance.

Il faut maintenant modifier le fichier ConfigService.config qui se trouve dans %ProgramFiles%\Microsoft System Center 2012 R2\Operations Manager\Server\ sur chaque management serveur. Une fois ce fichier ouvert, cherchez <Category Name="Cmdb">  et modifiez la valeur du premier Setting avec le nouveau nom de votre serveur :

image

Faites de même avec le paramètre suivant, <Category Name="ConfigStore"> :

image

Une fois ceci fait, nous allons mettre à jour la base de données avec le nom du nouveau serveur. Vous avez 2 façons, soit en SQL, soit avec l’interface graphique de SQL. J’aborderai ici les 2 méthodes.

Avec interface graphique :

Dans SQL Server Management Studio de votre nouveau serveur, ouvrez Databases > OperationsManager > Tables et cherchez la table suivant, dbo.MT_Microsoft$SystemCenter$ManagementGroup et faites clique droit dessus, puis Edit Top 200 Rows. Vous devriez avoir ceci :

image

Changez le nom du serveur de la colonne SQLServerName_43FB076F_7970_4C86_6DCA_8BD541F45E3A avec le nouveau nom :

image

Sauvegardez et faites de même avec la table dbo.MT_Microsoft$SystemCenter$OpsMgrDB$AppMonitoring et la colonne MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A.

Pour la base OperationsManagerDW, modifiez la table dbo.MT_Microsoft$SystemCenter$DataWarehouse et la colonne MainDatabaseServerName_2C77AA48_DB0A_5D69_F8FF_20E48F3AED0F mais aussi la table dbo.MT_Microsoft$SystemCenter$DataWarehouse$AppMonitoring avec la colonne MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A, la table dbo.MT_Microsoft$SystemCenter$DataWarehouse$AppMonitoring_Log avec la colonne Post_MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A et la table dbo.MT_Microsoft$SystemCenter$DataWarehouse_Log avec la colonne Post_MainDatabaseServerName_2C77AA48_DB0A_5D69_F8FF_20E48F3AED0F avec le nom de votre nouveau serveur SQL.

En SQL :

USE OperationsManager
GO
UPDATE dbo.MT_Microsoft$SystemCenter$ManagementGroup
SET SQLServerName_43FB076F_7970_4C86_6DCA_8BD541F45E3A = 'SQL02'
WHERE SQLServerName_43FB076F_7970_4C86_6DCA_8BD541F45E3A = 'SQL01'

USE OperationsManager
GO
UPDATE dbo.MT_Microsoft$SystemCenter$OpsMgrDB$AppMonitoring
SET MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A = 'SQL02'
WHERE MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A = 'SQL01'

USE OperationsManager
  GO
UPDATE dbo.MT_Microsoft$SystemCenter$DataWarehouse
  SET MainDatabaseServerName_2C77AA48_DB0A_5D69_F8FF_20E48F3AED0F = 'SQL02'
  WHERE SMainDatabaseServerName_2C77AA48_DB0A_5D69_F8FF_20E48F3AED0F = 'SQL01'

USE OperationsManager
  GO
  UPDATE dbo.MT_Microsoft$SystemCenter$DataWarehouse$AppMonitoring
  SET MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A = 'SQL02'
  WHERE MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A = 'SQL01'

USE OperationsManager
  GO
UPDATE dbo.MT_Microsoft$SystemCenter$DataWarehouse$AppMonitoring_Log
  SET Post_MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A = 'SQL02'
  WHERE Post_MainDatabaseServerName_5C00C79B_6B71_6EEE_4ADE_80C11F84527A = 'SQL01'

USE OperationsManager
  GO
  UPDATE dbo.MT_Microsoft$SystemCenter$DataWarehouse_Log
  SET Post_MainDatabaseServerName_2C77AA48_DB0A_5D69_F8FF_20E48F3AED0F = 'SQL02'
  WHERE Post_MainDatabaseServerName_2C77AA48_DB0A_5D69_F8FF_20E48F3AED0F = 'SQL01'

Modifiez maintenant la table dbo.MemberDatabase de la base OperationsManagerDW. Changez la valeur de la colonne ServerName avec le nom du nouveau serveur SQL.

USE OperationsManagerDW
GO
UPDATE dbo.MemberDatabase
SET ServerName = ‘SQL02’
WHERE ServerName = ‘SQL01’

Il faut maintenant appliquer les sécurités SQL sur les bases. Dépliez Security > Logins et ajouter le compte écriture de données, dans mon cas svc-omwrite et celui en lecture, dans mon cas svc-omreader. Mapper ces 2 comptes avec les 2 bases de données. Ajoutez le compte d’action, dans mon cas svc-ommgmt. Ajoutez aussi le compte ordinateur qui a le service Data Access Service (SCOM01 dans mon cas) et ajoutez lui les droits suivants dans SQL sur la base OperationsManager :

  • ConfigService
  • db_accessadmin
  • db_datareader
  • db_datawriter
  • db_ddladmin
  • db_securityadmin
  • sdk_users
  • sql_dependency_subscriber

Et sur la base OperationsManagerDW :

  • db_datareader
  • OpsMgrReader
  • apm_datareader

Exécutez maintenant les commandes SQL suivantes sur la base de données OperationsManager :

sp_configure ‘show advanced options’,1
reconfigure
sp_configure ‘clr enabled’,1
reconfigure

Exécutez ensuite la commande suivante :

SELECT is_broker_enabled FROM sys.databases WHERE name='OperationsManager'

Si la valeur retournée de is_broker_enabled est égale à 1, alors ignorez l’étape suivante, sinon, faites ceci :

image

ALTER DATABASE OperationsManager SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE OperationsManager SET ENABLE_BROKER
ALTER DATABASE OperationsManager SET MULTI_USER

Vous pouvez maintenant redémarrer les services SCOM que vous aviez arrêter et vérifier que tout fonctionne correctement, notamment en vous rendant dans la partie Administration et en regardant l’étant de votre ou vos management serveur.

Si vous avez des questions, n’hésitez pas.

Facebook Like
Anonymous