O SQL Server Management Studio 18 não será aberto (apenas a tela inicial será exibida)

105

Acabei de instalar o SSMS 18 GA em um computador com apenas o VS2019 instalado e, quando tento abrir o SSMS, a tela inicial aparece, mas o processo é encerrado.

A execução de ssms com o -logparâmetro revela uma mensagem de erro:

Falha no CreateInstance para o pacote [Pacote do Agendador de Tarefas] Origem: 'mscorlib' Descrição: Não foi possível carregar o arquivo ou o conjunto 'Microsoft.VisualStudio.Shell.Interop.8.0, Versão = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou um dos suas dependências. A definição do manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT: 0x80131040) System.IO.FileLoadException: Não foi possível carregar o arquivo ou assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Versão = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou uma de suas dependências. A definição do manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT: 0x80131040) Nome do arquivo: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versão = 15.0.0.0, Culture = Neutral, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: não foi possível carregar o arquivo ou o conjunto' Microsoft.VisualStudio.Shell.Interop.8.0, versão = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'ou uma de suas dependências . A definição do manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT: 0x80131040) Nome do arquivo: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versão = 8.0.0.0, Cultura = neutra, PublicKeyToken = b03f5f7f11d50a3a'

WRN: O log de ligação da montagem está desativado. Para habilitar o log de falha de ligação de montagem, defina o valor do Registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) como 1. Nota: Há alguma penalidade de desempenho associada ao log de falha de ligação de montagem. Para desativar esse recurso, remova o valor do registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

em System.Reflection.RuntimeAssembly.GetType (assembly RuntimeAssembly, nome da String, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack tipo) em System.Reflection.RuntimeAssembly.GetType (Nome da string, Boolean throwOnError, Boolean ignoreCase) em System.ARuntimeAssembly. assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activationAttributes, Evidence securityInfo, StackCrawlMark & ​​stackMark) em System.Activator.CreateInstance (String assemblyName, String typeName) em System.AppDomain .CreateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: não foi possível carregar o arquivo ou assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Versão = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' ou uma de suas dependências. A definição do manifesto da montagem localizada não corresponde à referência da montagem. (Exceção de HRESULT: 0x80131040) Nome do arquivo: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versão = 8.0.0.0, Cultura = neutra, PublicKeyToken = b03f5f7f11d50a3a'

WRN: O log de ligação da montagem está desativado. Para habilitar o log de falha de ligação de montagem, defina o valor do Registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) como 1. Nota: Há alguma penalidade de desempenho associada ao log de falha de ligação de montagem. Para desativar esse recurso, remova o valor do registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Tentei executar o "Reparo" no SSMS e tentei o reparo C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, mas o problema persiste.

Mitch
fonte
1
O arquivo de log é gerado adicionando o -logparâmetro Por exemplo:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch
1
Você também pode obter o log em C: \ Usuários (usuário) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml sem usar a opção -log
Stephane

Respostas:

125

Acabei de substituir o Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliescom a cópia ..\PrivateAssemblies\Interope o IDE é aberto. (Agradecemos a Mitch por descobrir o nome da DLL ofensiva.)

Parece uma pergunta e resposta popular hoje, então fico feliz em saber que não fui só eu.

Marca
fonte
Para mim, havia uma Microsoft.VisualStudio.Shell.Interop.8.0pasta adicional para copiar.
Andez
Funcionou como um encanto e um salva-vidas. Obrigado.
HartleySan
Trabalhou para mim. Copie de \ PrivateAssemblies para \ PublicAssemblies.
Hairgami_Master 19/06
65

Como Ronan Ariely recomenda , foi publicada uma solução oficial que recomenda remover uma linha de ssms.exe.config.

Em 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>

Se você executou minha solução anterior de adicionar o assembly ao GAC, provavelmente deve desinstalá-lo executando:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Mitch
fonte
1
Qualquer versão do gacutildeve estar bem. Ou você pode usarpowershell se você não tem uma versão do SDK instalada.
Mitch
1
Adoro o StackExchange por isso. Totalmente funcionou para mim.
Matt The Ninja
Bom .. este trabalho para mim
Jatin Gadhiya
Como você sabia, cara ???? Obrigado!
Desenvolvedor
29

Esse é um problema conhecido e há uma nova solução oficial publicada pela equipe de desenvolvedores do SSMS.

Você pode visualizar o ticket aberto no sistema de feedback da Microsoft no seguinte link: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

História curta:

A primeira solução alternativa apresentada foi copiar o arquivo:Microsoft.VisualStudio.Shell.Interop.8.0.dll

do diretório: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop

no diretório: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Posteriormente, uma solução mais focada foi publicada (que é o que eu usei): basta remover o arquivoC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

De qualquer forma, há alguns dias a equipe publicou uma atualização, como você pode ver no link acima. Esta é uma citação da resposta oficial atualizada:

A solução alternativa recomendada, entretanto, é:

1) Feche todas as instâncias do SSMS

2) Edite ssms.exe.config

3) Remova a linha que possui o seguinte texto (deve ser a linha 38): NgenBind_OptimizeNonGac enabled = "1"

Essa é a mesma alteração que ocorrerá na próxima versão do SSMS 18.x

Nota! o local do arquivo ssms.exe.config está na pasta:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE

Ronen Ariely
fonte
1
Essa deve ser a solução alternativa aprovada.
Omzig 19/07
Yous deveria @Omzig, mas por algum motivo nem sequer conseguiu o número máximo de votações😃
Ronen Ariely
1
Solução adequada .. !! Thans companheiro, isso corrigiu o problema.
Mohamed Ayas
Você é muito bem-vindo @MohamedAyas 😃
Ronen Ariely
Eu tenho o SQL Management Studio 2014, mas não tenho essa pasta. ssms.exe.config está em C: \ Arquivos de programas (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... e o conteúdo não tem nada a ver com o mencionado aqui. Alguma ajuda, por favor?
jstuardo 28/08
1

Acabei de cruzar o mesmo problema em um Server 2016 recém-construído com o SQL Server 2017 e SSMS 18.0, no entanto, ele desapareceu após 2 reinicializações durante as quais o servidor foi totalmente corrigido com os patches de março de 2019. Tentarei fazer mais alguns testes para descobrir se realmente eram os patches de O / S que estavam ajudando isso, mas não tenho conhecimento de mais nada instalando nesse meio tempo nesse servidor.

Parece mais aleatório após a reinicialização, mas o que notei agora é que o SSMS funciona logo após a instalação, mas o SCCM na minha organização começa a instalar várias coisas e o SSMS para de funcionar. Agora, o suspeito é ".NET Framework 3.5 Server Feature 2016"

M. Strzelecki
fonte
0

Há outra solução para esse problema. No item de Feedback do Azure, o SQL Server Management Studio 18 GA (15.0.18118.0) não é compatível com o .NET Framework 4.8. Erich Signer sugere:

Passo 1:

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

Renomeie e verifique se este arquivo não possui mais a .pkgdefextensão. Ou remova o arquivo

Passo 2:

Remova a seguinte chave do Registro (criada na Inicialização do SSMS 18 usando o arquivo ".pkgdef" mencionado acima):

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

Com base em um comentário originalmente deixado por omzig

user126897
fonte
0

Eu enfrentei o mesmo problema e, depois de procurar um pouco por esse problema, encontrei o seguinte artigo passo a passo sobre esse problema:

A solução fornecida é:

Copie o arquivo PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (aquele com versão de montagem 15.0.0.0) na pasta PublicAssemblies.

Os passos foram os seguintes:

  • Primeiro, por precaução, o autor renomeou o existente PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllpara outra coisa, apenas no caso de eu precisar desse arquivo posteriormente.
  • Então ele copiou o Microsoft.VisualStudio.Shell.Interop.8.0.dllarquivo PrivateAssemblies\Interoppara a PublicAssembliespasta.

Após essa alteração, o SSMS foi carregado sem nenhum problema.

Hadi
fonte