SQL Server Management Studio 18 ne s'ouvre pas (seul l'écran de démarrage apparaît)

105

Je viens d'installer SSMS 18 GA sur un ordinateur sur lequel seul VS2019 est installé. Lorsque j'essaie d'ouvrir SSMS, l'écran de démarrage s'affiche, mais le processus se termine.

L'exécution de ssms avec le -logparamètre révèle un message d'erreur:

Echec de CreateInstance pour le package [Package du planificateur de tâches] Source: 'mscorlib' Description: Impossible de charger le fichier ou l'assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, version = 15.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a' ou l'un de ceux-ci. ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040) System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a' ou une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040) Nom du fichier: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: impossible de charger le fichier ou l'assembly' Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a 'ou une de ces informations. . La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040) Nom du fichier: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la journalisation de la liaison d'assemblage est désactivée. Pour activer la journalisation des échecs de liaison d'assemblages, définissez la valeur de registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) sur 1. Remarque: La journalisation des échecs de liaison d'assemblages peut être pénalisée. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

à System.Reflection.RuntimeAssembly.GetType (RuntimeAssembly assembly, Nom de la chaîne, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack) à System.Reflection.RuntimeAssembly.GetType (Nom de chaîne, Boolean throwOn, à la fois un nom de domaine, une valeur assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, classeur Binder, Object [] arguments, culture CultureInfo, Object [] activationAttributes, Evidence securityInfo, StackCrawlMark et stackMark) à System.Activator.CreateInstance (String assemblyName, à String.Name). .CreateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: impossible de charger le fichier ou l'assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a' ou l'une de ses dépendances. La définition du manifeste de l'assembly localisé ne correspond pas à la référence de l'assembly. (Exception de HRESULT: 0x80131040) Nom du fichier: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la journalisation de la liaison d'assemblage est désactivée. Pour activer la journalisation des échecs de liaison d'assemblages, définissez la valeur de registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) sur 1. Remarque: La journalisation des échecs de liaison d'assemblages peut être pénalisée. Pour désactiver cette fonctionnalité, supprimez la valeur de registre [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

J'ai essayé d'exécuter "Réparer" sur SSMS et j'ai essayé de le réparer C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, mais le problème persiste.

Mitch
la source
1
Le fichier journal est généré en ajoutant le -logparamètre. Exemple:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch
1
Vous pouvez également obtenir le journal auprès de C: \ Utilisateurs (utilisateur) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml sans utiliser le commutateur -log
Stephane,

Réponses:

125

Je viens de superposer Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliesavec la copie à partir de ..\PrivateAssemblies\Interopet l'EDI s'ouvre. (Merci à Mitch d'avoir découvert le nom de la DLL incriminée.)

Cela ressemble à une séance de questions-réponses populaire aujourd'hui, alors je suis heureux de savoir que ce n'était pas que moi.

marque
la source
Pour moi, il y avait un Microsoft.VisualStudio.Shell.Interop.8.0dossier supplémentaire dans lequel copier.
Andez
A travaillé comme un charme et une bouée de sauvetage. Merci.
HartleySan
Travaillé pour moi Copier de \ PrivateAssemblies dans \ PublicAssemblies.
Hairgami_Master
65

Comme le recommande Ronan Ariely , une solution officielle a été publiée, qui recommande de supprimer une ligne de ssms.exe.config.

Dans C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- ...snip... -->
    <runtime>
        <!-- ...snip... -->
        <!-- Remove this line (~line 38) -->
        <NgenBind_OptimizeNonGac enabled="1" />
        <!-- ...snip... -->
    </runtime>
    <!-- ...snip... -->
</configuration>

Si vous avez exécuté ma solution précédente d'ajout de l'assembly au GAC, vous devriez probablement le désinstaller en exécutant:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Mitch
la source
1
Toute version de gacutildevrait être bien. Ou vous pouvez utiliserpowershell si vous n'avez pas installé de version du SDK.
Mitch
1
Love StackExchange pour cela. Totalement travaillé pour moi.
Matt The Ninja
Nice .. ce travail pour moi
Jatin Gadhiya
Comment tu le sais, mec ???? Je vous remercie!
Développeur
29

Ce problème est connu et il existe une nouvelle solution de contournement officielle publiée par l'équipe de développeurs SSMS.

Vous pouvez afficher le ticket ouvert sur le système de commentaires Microsoft à l' adresse suivante: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Histoire courte:

La première solution de contournement présentée consistait à copier le fichier:Microsoft.VisualStudio.Shell.Interop.8.0.dll

du répertoire: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop

dans le répertoire: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Plus tard, une solution plus ciblée a été publiée (c’est ce que j’ai utilisé): il suffit de supprimer le fichier.C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Quoi qu'il en soit, l'équipe a publié il y a plusieurs jours une mise à jour, comme vous pouvez le constater dans le lien ci-dessus. Voici une citation de la réponse officielle mise à jour:

La solution de contournement recommandée, dans l'intervalle, est la suivante:

1) Fermez toutes les instances de SSMS

2) Éditez le fichier ssms.exe.config

3) Supprimez la ligne contenant le texte suivant (ligne 38): NgenBind_OptimizeNonGac enabled = «1»

C'est le même changement qui sera dans la prochaine version de SSMS 18.x

Remarque! L'emplacement du fichier ssms.exe.config est dans le dossier:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE

Ronen Ariely
la source
1
Cela devrait être la solution de contournement approuvée.
Omzig
Yous il devrait @Omzig, mais pour une raison quelconque, il n'a même pas obtenu le nombre maximum de votes
Ronen Ariely
1
Contournement correct .. !! Thans mate, cela a résolu le problème.
Mohamed Ayas
Vous êtes les bienvenus @MohamedAyas 😃
Ronen Ariely
J'ai SQL Management Studio 2014 mais je n'ai pas un tel dossier. ssms.exe.config est dans C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... et le contenu n'a rien à voir avec ce qui est mentionné ici. Toute aide, s'il vous plaît?
jstuardo
1

Je viens de traverser le même problème sur un serveur 2016 nouvellement construit avec SQL Server 2017 & SSMS 18.0, mais il s'est éteint après 2 redémarrages au cours desquels le serveur a été entièrement corrigé avec les correctifs de mars 2019. Je vais essayer de faire quelques tests supplémentaires pour déterminer s'il s'agit vraiment de correctifs O / S, mais je ne suis au courant d'aucune autre installation sur ce serveur.

Cela semble plus aléatoire après les redémarrages, mais ce que j’ai remarqué, c’est que SSMS fonctionne juste après l’installation, mais SCCM dans mon organisation commence à installer diverses choses et SSMS cesse de fonctionner. Maintenant, le suspect est ".NET Framework 3.5 Server Feature 2016"

M. Strzelecki
la source
0

Il existe une autre solution à ce problème. Sur l'élément Azure Feedback, SQL Server Management Studio 18 GA (15.0.18118.0) n'est pas compatible avec .NET Framework 4.8 Erich Signer suggère:

Étape 1:

C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Renommez et assurez-vous que ce fichier n'a plus l' .pkgdefextension. Ou supprimez le fichier.

Étape 2:

Supprimez la clé de registre suivante (créée au démarrage de SSMS 18 à l’aide du fichier ".pkgdef" mentionné ci-dessus):

HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell_Config\RuntimeConfiguration\dependentAssembly\bindingRedirection\{8BC7AF31-B6DA-4B97-8B36-F0500DECB147}

Basé sur un commentaire laissé à l'origine par omzig

utilisateur126897
la source
0

J'ai fait face au même problème et après avoir cherché pendant un moment, j'ai trouvé l'article suivant, étape par étape, traitant de ce problème:

La solution fournie est:

Copiez le fichier PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (celui avec la version d'assembly 15.0.0.0) dans le dossier PublicAssemblies.

Les étapes étaient les suivantes:

  • Premièrement, par précaution, l'auteur a renommé l'existant PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllen quelque chose d'autre, juste au cas où j'aurais besoin de ce fichier ultérieurement.
  • Il a ensuite copié le Microsoft.VisualStudio.Shell.Interop.8.0.dllfichier PrivateAssemblies\Interopdans le PublicAssembliesdossier.

Après cette modification, le SSMS chargé sans aucun problème.

Hadi
la source