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?


@ 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


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.


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.


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.


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á.


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


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.



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


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.



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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.