Un petit billet rapide afin de regrouper des informations qui m'ont été utiles récemment et qui peuvent l'être à d'autres concernant RDS sur Windows Server 2012 R2.
Je vous passe l'histoire, mais suite au mauvais décommissionnement d'un serveur RDS inclus dans une ferme j'ai perdu la connexion à la console de gestion sur mon broker.
Le message est :
Les serveurs suivants de déploiement ne figure pas dans le pool de serveurs
1. [FQDN du serveur]
.Ajoutez les au pool de serveurs
1. [FQDN du serveur]
.Ajoutez les au pool de serveurs
Supprimez le rôle avant ou utilisez Powershell tel que présenté ci-après;
Donc, les premiers articles sur lesquels je suis tombé renvoyaient sur la méthode Microsoft, via "POWERSHELL" suivante;
https://support.microsoft.com/fr-fr/...ou-remove-a-se
Pour faire simple, ont liste les serveur RDS de la ferme avec la commande
Code : | Sélectionner tout |
get-RDServer
Puis on supprime le serveur souhaité avec la commande
Code : | Sélectionner tout |
Remove-RDServer -Server nom-fqdb-du-serveur -Role <Role-Name> -Force
Bref, à ce stade je n'ai toujours pas avancé ...
Si l'histoire n'était pas plus compliquée, une simple restauration de la VM aurait permis de retrouver la main et de faire la suppression dans l'ordre.
Mais ce n'est pas le cas... Je me retrouve à essayer de scier la branche sur laquelle je suis assis ... alors qu'elle est déjà coupée
C'est là qu'une autre solution m'est apparue des abîmes de mes recherches ( en dépassant les 5 premières pages quoi ..) via mon moteur de recherche favoris en US (celui que nous utilisons quasiment tous pour les soucis techniques, sinon j'utilise https://www.lilo.org/ qui est basé dessus mais FR et plein de bonnes actions )
La solution : Supprimer directement le ou les serveurs dans la base SQL windows embarquée utilisée par le Broker.
Pour se connecter au moteur SQL embarqué rien de plus simple:
Télécharger et installer SQL Server Management Studio express (par exemple ici https://www.microsoft.com/fr-fr/down...s.aspx?id=8961) sur le serveur broker.
Attention - il faudra utiliser la session d'administrateur local !
C'est le dernier moment ou l'ont peut encore penser à réaliser un snapshot du serveur avant d'y faire une potentielle bêtise
Se connecter au serveur avec la ligne suivante;
Code : | Sélectionner tout |
\\.\pipe\MICROSOFT\##WID\tsql\query
Se connecter sur la base RDCms et faire clic droit pour lancer une requête de recherche du top 1000 pour la table RDCms.RDS.Server, afin de récupérer la liste des serveurs du pool et leurs ID.
Je met le code directement si besoin :
Code : | Sélectionner tout |
1 2 3 4 5 6 | /****** Script de la commande SelectTopNRows à partir de SSMS ******/ SELECT TOP (1000) [Id] ,[Name] ,[OsVersion] ,[ClusterName] FROM [RDCms].[rds].[Server] |
Reste à supprimer le ou les récalcitrants avec la commande ci-après en renseignant l'ID correspondant au serveur récupéré dans le tableau affiché par la commande précédente;
Code : | Sélectionner tout |
delete from rds.Server where ID = ‘[IDduServerAsupp]’;
En effet, le serveur peut avoir des références qui empêche la suppression.
Pas de panique! Il suffit de refaire la même chose sur la table de référence indiquée dans le message d'erreur et de la supprimer avant le serveur.
Dans mon cas, cela se trouvait dans la table RoleRdsh.
vous trouverez ci-après les lignes utilisées pour trouver et supprimer la référence qui m’empêchait de supprimer le serveur de la table "RDS.Server";
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | /****** Script de la commande SelectTopNRows à partir de SSMS ******/ SELECT TOP (10) [Id] ,[RdcbConfigId] ,[PoolId] FROM [RDCms].[rds].[RoleRdsh] /****** Suppression des lignes null pour les serveurs à supprimer *****/ delete from rds.RoleRdsh where ServerId=[IDduServerAsupp] |
Vous pouvez recommencer la première manœuvre, la référence ne doit plus empêcher la suppression du serveur inexistant.
Mais surtout, l'accès à la console de gestion RDS sur le broker est revenue !