O índice estava fora dos limites do Array. (Microsoft.SqlServer.smo)

91

Estou usando SQL Server 2008 R2. Está funcionando bem. Mas recentemente, mudei meu servidor de hospedagem e descobri que eles foram instalados SQL Server 2012no servidor.

Agora, o problema é que depois de conectar com o banco de dados do servidor através SQL Server 2008 R2, quando clico em qualquer nome de tabela ou procedimento armazenado, estou recebendo o erro: Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

Então, há algum problema do meu lado ou é do lado do servidor ?? e como posso evitar esse problema?

Jeeten Parmar
fonte
@ paul.abbott, é obrigatório ???
Jeeten Parmar
Você pode ir em frente, pois o novo recurso não estará disponível com ele.
Samith C Valsalan
1
Em nosso caso, restauramos um banco de dados R2 2008 no SQL 2016 e tivemos o mesmo problema ao tentar usar o diagrama de alguma forma. Depois de executar o SSMS 2016 13.0.15900.1 como administrador, ele resolveu o problema. Vai saber!
Marc Roussel

Respostas:

51

Atualize seu estúdio de gerenciamento SqlServer de 2008 a 2012

Ou baixe os service packs do SqlServer Management Studio e atualize provavelmente resolverá sua solução

Você pode baixar o SQL Server Management Studio 2012 no link abaixo

Microsoft® SQL Server® 2012 Express http://www.microsoft.com/en-us/download/details.aspx?id=29062

Md.Rajibul Ahsan
fonte
Ainda não há uma solução para isso. Eu tive esse erro em todas as versões do Management Studio, incluindo o 2018 - é uma pena que esse bug já esteja aí há tantos anos.
MeTitus
98

Reiniciar o Management Studio funcionou para mim.

Abisoye Falabi
fonte
5
Parece que o erro "fora dos limites" é causado pelo armazenamento em cache da estrutura do banco de dados pelo Studio. Depois de fazer alterações suficientes na estrutura, ela corresponderá mal à versão em cache e começará a gerar o erro. Reiniciar reconstrói o cache.
David Austin,
Esse era o problema real, nunca tive tempo de atualizar minha resposta. A atualização corrige o bug que tu
Abisoye Falabi
41

Para mim, esse problema ainda existe com o SSMS versão 2016 (13.0.16100.1).

Uma solução alternativa decente é não usar a caixa de diálogo 'Clique com o botão direito' -> 'Adicionar tabela ...', mas simplesmente arraste a tabela que deseja adicionar do Pesquisador de Objetos para a superfície do Diagrama. Ao arrastar, o ícone do mouse muda para um símbolo de 'adicionar' e a tabela é adicionada quando você solta o mouse.

Melhor que ter que fechar o SSMS todas as vezes.

MeanGreen
fonte
Os diagramas não estão mais disponíveis v18.0 preview 4, esperançosamente eles estarão de volta em breve!
MeanGreen,
21

Reiniciado funcionou! Eu encontrei o mesmo erro ao adicionar nova tabela ao meu diagrama de banco de dados no sql server 2016, reiniciei o sql server management studio, finalmente resolvido.

Mernig
fonte
Sim. Eu tive este erro no SQL Server 2016 Management Studio (v 13.0.16106.4) Tudo que eu tive que fazer foi reiniciar o App / UI. Apenas desconectar o servidor e reconectar não funcionou.
joedotnot
7

Isso é um problema se você estiver usando as ferramentas do Management Studio 2008 para se conectar a uma instância do SQL 2012.

Eu experimento muito isso se estou trabalhando em um servidor com SQL 2008 e tentando consultar rapidamente outro servidor que está executando o SQL 2012.

Eu normalmente mantenho minha estação de trabalho pessoal na versão mais recente do management studio (2012 neste caso), e sou capaz de administrar todos os servidores de lá.

Justin Manning
fonte
6

A razão por trás da mensagem de erro é que o SQL não pôde mostrar novos recursos em sua versão antiga do SQL Server.

Por favor, atualize sua versão SQL do cliente para a mesma versão SQL do servidor

Samith C Valsalan
fonte
2

As causas sugeridas agora são comprovadamente impossíveis. Estou executando o SSMS V17.9.2 no SS 2014 e ainda tenho o problema. Problemas de memória existem com esta ferramenta desde pelo menos 2006, quando comecei a usar o SSMS.

Sim, a MS 'quer' se livrar da diagramação, mas os usuários não permitem. Tenho a sensação de que eles nunca resolverão nenhum desses problemas porque desejam que os usuários fiquem tão fartos da ferramenta que muitos deles desistem de usá-la e podem abandoná-la totalmente.

A reinicialização ainda é uma solução alternativa se você aguentar fazer isso várias vezes por dia.

Bielawski
fonte
1

você deve usar a nova versão do Management Studio. E você também terá um erro 29506. então você deve executar como Administrador para configuração. Olhe este site. http://shareis.com/post/29506-management-studio-express

Çetin DOĞU
fonte
1

Tive uma experiência semelhante usando SMO via C # com o rastreamento de pilha:

[1896] System.IndexOutOfRangeException: Index was outside the bounds of the array. 
[1896]    at Microsoft.SqlServer.Management.Smo.BitStorage.SetBit(Int32 itemIndex, BitIndex bitIndex, Boolean value) 
[1896]    at Microsoft.SqlServer.Management.Smo.SqlSmoObject.AddObjectPropsFromDataReader(IDataReader reader, Boolean skipIfDirty, Int32 startColIdx, Int32 endColIdx) 
[1896]    at Microsoft.SqlServer.Management.Smo.SqlSmoObject.ImplInitialize(String[] fields, OrderBy[] orderby) 
[1896]    at Microsoft.SqlServer.Management.Smo.SqlSmoObject.Initialize(Boolean allProperties) 
[1896]    at Microsoft.SqlServer.Management.Smo.SqlSmoObject.OnPropertyMissing(String propname, Boolean useDefaultValue) 
[1896]    at Microsoft.SqlServer.Management.Smo.PropertyCollection.RetrieveProperty(Int32 index, Boolean useDefaultOnMissingValue) 
[1896]    at Microsoft.SqlServer.Management.Smo.PropertyCollection.GetValueWithNullReplacement(String propertyName, Boolean throwOnNullValue, Boolean useDefaultOnMissingValue) 
[1896]    at Microsoft.SqlServer.Management.Smo.Information.get_MasterDBPath()

Descobri que minhas versões do CLR / NCLI / SMO eram 10.50.1600.1. Atualizar para 10.53.6000.34 corrigiu o problema, permitindo que o SMO 2008R2 fizesse muitas coisas com os servidores de 2012 e 2014.

Obtenha-os no pacote de recursos

https://www.microsoft.com/en-gb/download/details.aspx?id=44272

GilesDMiddleton
fonte
1
Achei este link para o SQL Server 2008 R2 Service Pack 3 mais claro em termos de qual instalador baixar support.microsoft.com/en-us/kb/2979597
Justin
0

Encontrei um problema com o Diagrama e Esquema no SQL-Server 2016 que pode ser útil para o assunto. Eu estava editando o diagrama (relacionado e com muitas tabelas do esquema "vendas") e adicionei uma nova tabela, MAS esqueci de declarar o esquema, então estava com o padrão "dbo". Aí quando voltei e abri o esquema "vendas" e tentei adicionar uma mesa existente ... Bluf! ISSO desencadeou exatamente o mesmo erro descrito naquele tópico. Eu até tentei a solução alternativa (arraste a mesa), mas não funcionou. De repente, percebi que o esquema estava incorreto, atualizei-o, tentei novamente e Eureka! o problema foi imediatamente embora ... Atenciosamente.

Felix Guillermo Ledesma
fonte
1
Bem-vindo ao Stack Overflow ! Leia Como escrevo uma boa resposta ?
Saurabh Bhandari
0

É um problema muito antigo com conteúdo em dinheiro. MS planeja remover diagramas de SSMS, então eles não se importam com isso. Enfim, existe solução.

Basta fechar a guia Diagramas e abri-la novamente. Funciona com SSMS 18.2.

Tomas Vileikis
fonte