web-dev-qa-db-fra.com

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

Je viens d'installer SSMS 18 GA sur un ordinateur avec seulement VS2019 installé, et lorsque j'essaie d'ouvrir SSMS, l'écran de démarrage s'affichera, mais le processus se terminera.

Exécution de ssms avec le -log le paramètre révèle un message d'erreur:

Échec 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 = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou l'un des 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 = neutral, 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 de fichier: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ---> System.IO.FileLoadException: impossible de charger le fichier ou Assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, 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 de fichier: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la journalisation des liaisons d'assemblage est désactivée. Pour activer la journalisation des échecs de liaison d'assembly, définissez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) sur 1. Remarque: Il existe une certaine pénalité de performance associée à la journalisation des échecs de liaison d'assembly. Pour désactiver cette fonctionnalité, supprimez la valeur de Registre [HKLM\Software\Microsoft\Fusion! EnableLog].

à System.Reflection.RuntimeAssembly.GetType (RuntimeAssembly Assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) at System.Reflection.RuntimeAssembly.GetType (String name, Boolean throwOnError, Boolean ignoreCaseActivateCase assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activationAttributes, Evidence securityInfo, StackCrawlMark & ​​stackMark) sur System.Activator.CreateInstance (String assemblyName, String typeName) sur System.AppDomain .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 = neutral, 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 de fichier: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la journalisation des liaisons d'assemblage est désactivée. Pour activer la journalisation des échecs de liaison d'assembly, définissez la valeur de registre [HKLM\Software\Microsoft\Fusion! EnableLog] (DWORD) sur 1. Remarque: Il existe une certaine pénalité de performance associée à la journalisation des échecs de liaison d'assembly. Pour désactiver cette fonctionnalité, supprimez la valeur de Registre [HKLM\Software\Microsoft\Fusion! EnableLog].

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

107
Mitch

Je viens de superposer le fichier Microsoft.VisualStudio.Shell.Interop.8.0.dll dans C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies avec la copie de ..\PrivateAssemblies\Interop et le IDE s'ouvre. (Merci à Mitch d'avoir découvert le DLL nom.)

Cela ressemble à un Q & A populaire aujourd'hui, donc je suis heureux de savoir que ce n'était pas seulement moi.

125
Mark

Comme Ronan Ariely recommande , ne 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é mon 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
65
Mitch

Il s'agit d'un problème 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 dans le lien suivant: 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 a consisté à copier le fichier: Microsoft.VisualStudio.Shell.Interop.8.0.dll

à partir 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é): Supprimez simplement 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, il y a plusieurs jours, l'équipe a publié une mise à jour comme vous pouvez le voir dans le lien ci-dessus. Ceci est 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) Modifiez ssms.exe.config

3) Supprimez la ligne qui contient le texte suivant (devrait être la ligne 38): NgenBind_OptimizeNonGac enabled = "1"

C’est le même changement que dans la prochaine version de SSMS 18.x

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

30
Ronen Ariely

Je viens de croiser le même problème sur un serveur 2016 nouvellement construit avec SQL Server 2017 et SSMS 18.0, mais il a disparu après 2 redémarrages au cours desquels le serveur a été entièrement corrigé avec les correctifs O/S de mars 2019. J'essaierai de faire d'autres tests pour déterminer si ce sont vraiment les correctifs O/S qui ont aidé cela, mais je ne suis au courant d'aucune autre installation entre-temps sur ce serveur.

Il semble plus aléatoire après les redémarrages, mais ce que j'ai remarqué maintenant, 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 "

1
M. Strzelecki

J'ai rencontré le même problème et après avoir cherché pendant un certain temps pour ce problème, j'ai trouvé l'article étape par étape suivant abordant ce problème:

La solution proposée est:

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

Les étapes étaient les suivantes:

  • Tout d'abord, par mesure de précaution, l'auteur a renommé le PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dll vers autre chose, au cas où j'aurais besoin de ce fichier plus tard.
  • Puis il a copié le Microsoft.VisualStudio.Shell.Interop.8.0.dll fichier de PrivateAssemblies\Interop dans le dossier PublicAssemblies.

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

1
Hadi

Il existe une autre solution à ce problème. Sur l'élément Azure Feedback SQL Server Management Studio 18 GA (15.0.18118.0) non 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 pas le .pkgdef extension plus. Ou supprimez le fichier.

Étape 2:

Supprimez la clé de registre suivante (qui est 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 initialement laissé par omzig

0
user126897