6
votes

SQL Server Configuration échoue avec "Impossible de générer une classe temporaire" lors de l'intermédiaire de Chef-Solo sur Vagrant

Au cours de la semaine dernière, j'essaie d'aborder Chef Cook-1172 sans beaucoup de succès. J'essaie d'installer SQL Server 2008 R2 Developer Edition (dans mon cas) via Vagrant à l'aide du Propositif Chef-Solo.

J'ai été capable de reproduire le problème en dehors du chef en faisant directement via le gemme Ruby WinRM, puis corrigez-le à l'aide d'un script personnalisé PowerShell qui utilise les informations d'identification transmises pour démarrer le processus Setup.exe sur l'invité Windows Vagrant. boîte. En d'autres termes, WinRM GEM invoque un script PS distant qui démarre le SQL Server Setup.exe sous les informations d'identification spécifiées, et cela fonctionne.

Cependant, exécutez le même script exact à travers Chef-Solo sur l'invité échoue avec une notification invalide: Impossible de générer une classe temporaire.

Le script rubis et le script PowerShell intégré que j'utilise pour les tests, appelé à mon hôte OS X: xxx

à partir des journaux d'installation SQL: xxx

Mon premier suspicion est que je suis en quelque sorte de permission Problème avec mon répertoire temporaire, mais j'ai essayé de courir procmon et n'avez trouvé aucun accès refusé les résultats lors de l'exécution de la configuration. De plus, je suis explicitement en cours d'exécution en tant qu'administrateur local (Vagrant) en raison du script PowerShell et de l'UAC est désactivé.


0 commentaires

4 Réponses :


4
votes

Je pourrais potentiellement énumérer beaucoup de choses que j'ai faites pour suivre cela, mais à la fin, j'ai découvert que l'échec n'a pas été spécifique pour exécuter l'installateur à travers le chef, voire de rubis. Essentiellement, il serait erroné à tout moment où j'ai utilisé un autre processus pour installer SQL Server via WinRM, même PowerShell, ce qui produirait une exception exceptionnelle dans les journaux d'installation.

Cela m'a fini par me demander ce qui était différent de l'exécution de l'installateur via WinRM. Ensuite, j'ai eu une pensée. Si j'étais Microsoft, j'aurais probablement des fonctionnalités d'entreprise autour de WinRM qui limitaient que la surface d'attaque sur un serveur. Apparemment, WinRM a une fonctionnalité appelée quota Gestion .

En bref, la modification de la stratégie de groupe locale de My Windows Guest VM corrigé le problème et j'étais enfin capable d'installer SQL Server via WinRM et Chef (avec mon script PS ci-dessus). Voici les paramètres que j'ai utilisés:

racine de la console | Politique informatique locale | Configuration de l'ordinateur | Modèles d'administration | Composants Windows | Windows Remote Shell

  • MaxConCurrentausers: 100
  • MaxMemororyPershellmb: 0
  • MaxProcessespeSépresShell: 0
  • MaxShellsperuser: 0

0 commentaires

0
votes

de ce Ticket Chef Cook-1172 , Julian C. Dunn [Chef] ajouté un commentaire

Nous pensons que cela est maintenant corrigé par Microsoft dans le correctif suivant, qui restaurera WinRM concernant la maxMemororyPershellmb: http://support.microsoft.com/kb/2842230

Malheureusement, cela ne fonctionne pas pour moi. J'ai toujours le même problème.


0 commentaires

3
votes

J'ai également eu cette question Installation de SQL Server sur DSC sur le serveur 2016 (et probablement les anciennes versions)

Vous pouvez également définir cette option via PowerShell directement: P>

set-item WSMan:\localhost\Shell\MaxMemoryPerShellMB 2048


1 commentaires

Je viens d'utiliser cela pour installer SQL 2014 sur Server 2012R2 et peut confirmer qu'elle résolue avec succès l'erreur de cette combinaison OS / SQL Server.



0
votes

Après avoir passé plusieurs jours à la poursuite de cela, j'ai constaté que la cause fondamentale, dans mon cas, était que lorsque j'ai inclus n'importe quel type de mot de passe dans le fichier d'inattends, il a échoué lors de l'installation via WinRM.

Ceci peut être résolu en utilisant crefsp


0 commentaires