web-dev-qa-db-fra.com

L'index était en dehors des limites du tableau. (Microsoft.SqlServer.smo)

J'utilise SQL Server 2008 R2. Cela fonctionne bien. Mais récemment, j'ai changé de serveur d'hébergement et j'ai appris qu'ils avaient installé SQL Server 2012 sur le serveur.

Maintenant, le problème est que, après la connexion à la base de données du serveur via SQL Server 2008 R2, lorsque je clique sur un nom de table ou une procédure stockée, je reçois une erreur: Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

Alors, y at-il un problème de mon côté ou est-ce du côté du serveur ??? et comment puis-je prévenir ce problème?

66
Jeeten Parmar

Mettez à niveau votre studio de gestion SqlServer de 2008 à 2012 

Ou Téléchargez les Service Packs de SqlServer Management Studio et mettez à jour probablement votre solution.

Vous pouvez télécharger le SQL Server Management studio 2012 à partir du lien ci-dessous.

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

43
Md.Rajibul Ahsan

Le redémarrage de Management Studio a fonctionné pour moi.

58
Abisoye Falabi

Pour moi, ce problème existe toujours avec SSMS version 2016 (13.0.16100.1).

Une solution correcte consiste à ne pas utiliser la boîte de dialogue "Clic droit" -> "Ajouter une table ...", mais simplement à faire glisser la table que vous souhaitez ajouter à partir de l'explorateur d'objets, sur la surface du diagramme. Tout en faisant glisser l'icône de la souris se transforme en un symbole 'ajouter' et le tableau est ajouté lorsque vous relâchez la souris.

Beats avoir à fermer SSMS à chaque fois.

32
MeanGreen

Redémarré a fonctionné! J'ai trouvé la même erreur pour ajouter une nouvelle table à mon diagramme de base de données sur SQL Server 2016, redémarré studio de gestion SQL Server, enfin résolu.

11
mernig

La raison derrière le message d'erreur est que SQL n'a pas pu afficher les nouvelles fonctionnalités de votre ancienne version du serveur SQL.

Veuillez mettre à niveau votre version SQL du client avec la même version que votre version serveur SQL

8
Samith C Valsalan

Ceci est un problème si vous utilisez les outils 2008 de studio de gestion pour vous connecter à une instance SQL 2012.

Je rencontre souvent cette situation si je travaille sur un serveur avec SQL 2008 et que j'essaie d'interroger rapidement un autre serveur qui exécute SQL 2012.

Je conserve normalement mon poste de travail personnel sur la dernière version de studio de gestion (2012 dans ce cas) et suis capable d'administrer tous les serveurs à partir de là.

7
Justin Manning

vous devez utiliser la nouvelle version de Management Studio. Et aussi vous aurez une erreur 29506. vous devriez donc vous lancer en tant qu'administrateur pour l'installation . Regardez ce site . http://shareis.com/post/29506-management-studio-express

2
Çetin DOĞU

J'ai eu une expérience similaire avec SMO via C # avec la trace de pile:

[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()

Il s'est avéré que mes versions du CLR/NCLI/SMO étaient la 10.50.1600.1 . Leur mise à niveau vers la version 10.53.6000.34 a corrigé le problème, ce qui permettait au SMO 2008R2 de faire beaucoup de choses avec les serveurs 2012 et 2014.

Obtenez-les du pack de fonctionnalités

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

2
GilesDMiddleton

C'est un très vieux problème avec le contenu encaissé. Les États membres prévoient de supprimer les diagrammes de SSMS afin qu'ils ne s'en soucient pas. Quoi qu'il en soit, la solution existe.

Fermez simplement l'onglet Diagrammes et ouvrez-le à nouveau. Fonctionne avec SSMS 18.2.

0
Tomas Vileikis

J'ai trouvé un problème avec Schéma et schéma dans SQL-Server 2016 qui pourrait être utile au sujet . J'étais en train de modifier un diagramme (lié à de nombreuses tables du schéma "sales") et j'ai ajouté un new table, MAIS j'ai oublié de déclarer le schéma, donc c'était avec le défaut "dbo". Puis, quand je suis revenu et ouvert le schéma "ventes" et essayé d’ajouter une table existante ... Bluf! QUE déclenché exactement la même erreur que celle décrite dans ce fil. J'ai même essayé la solution de contournement (faites glisser la table) mais cela n'a pas fonctionné. Soudainement, j'ai remarqué que le schéma était incorrect, je l'ai mis à jour, essayé à nouveau, et Eureka! le problème était immédiatement parti ... Cordialement.