Index war außerhalb der Grenzen des Arrays. (Microsoft.SqlServer.smo)

91

Ich benutze SQL Server 2008 R2. Es funktioniert gut. Aber vor kurzem habe ich meinen Hosting-Server geändert und festgestellt, dass sie SQL Server 2012auf dem Server installiert sind .

Das Problem ist nun, dass nach dem Herstellen einer Verbindung mit der Serverdatenbank über SQL Server 2008 R2Wenn ich auf einen Tabellennamen oder eine gespeicherte Prozedur klicke, eine Fehlermeldung angezeigt wird: Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

Gibt es also ein Problem von meiner Seite oder von der Serverseite? und wie kann ich dieses Problem verhindern?

Jeeten Parmar
quelle
@ paul.abbott, ist es obligatorisch ???
Jeeten Parmar
Sie können damit fortfahren, neue Funktionen sind damit nicht verfügbar.
Samith C Valsalan
1
In unserem Fall haben wir eine 2008 R2-Datenbank in SQL 2016 wiederhergestellt und hatten das gleiche Problem beim Versuch, das Diagramm in irgendeiner Weise zu verwenden. Nach dem Ausführen von SSMS 2016 13.0.15900.1 als Administrator wurde das Problem behoben. Stelle dir das vor!
Marc Roussel

Antworten:

51

Aktualisieren Sie Ihr SqlServer Management Studio von 2008 auf 2012

Oder laden Sie die Service Packs von SqlServer Management Studio herunter und aktualisieren Sie wahrscheinlich Ihre Lösung

Sie können das SQL Server Management Studio 2012 über den folgenden Link herunterladen

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

Md.Rajibul Ahsan
quelle
Es gibt noch keine Lösung dafür. Ich hatte diesen Fehler in allen Versionen von Management Studio, einschließlich 2018 - es ist eine Schande, dass dieser Fehler schon so viele Jahre besteht.
MeTitus
97

Das Neustarten des Management Studios hat bei mir funktioniert.

Abisoye Falabi
quelle
5
Es scheint, dass der Fehler "außerhalb der Grenzen" durch das Zwischenspeichern der Datenbankstruktur durch Studio verursacht wird. Nachdem Sie genügend Änderungen an der Struktur vorgenommen haben, stimmt diese nicht mehr mit der zwischengespeicherten Version überein und generiert den Fehler. Durch einen Neustart wird der Cache neu erstellt.
David Austin
Das war das eigentliche Problem, ich hatte nie Zeit, meine Antwort zu aktualisieren. Das Aktualisieren behebt den Fehler, den du
Abisoye Falabi
41

Für mich besteht dieses Problem immer noch mit der SSMS-Version 2016 (13.0.16100.1).

Eine gute Lösung besteht darin, nicht das Dialogfeld "Rechtsklick" -> "Tabelle hinzufügen ..." zu verwenden, sondern einfach die Tabelle, die Sie hinzufügen möchten, aus dem Objekt-Explorer auf die Diagrammoberfläche zu ziehen. Beim Ziehen ändert sich das Maussymbol in ein 'Hinzufügen'-Symbol und die Tabelle wird hinzugefügt, wenn Sie die Maus loslassen.

Es ist besser, jedes Mal SSMS schließen zu müssen.

MeanGreen
quelle
Diagramme sind nicht mehr verfügbar v18.0 Vorschau 4, hoffentlich sind sie bald zurück!
MeanGreen
20

Neustart funktioniert! Ich habe den gleichen Fehler beim Hinzufügen einer neuen Tabelle zu meinem Datenbankdiagramm auf SQL Server 2016 gefunden, das SQL Server Management Studio neu gestartet und schließlich behoben.

mernig
quelle
Ja. Ich hatte diesen Fehler in SQL Server 2016 Management Studio (v 13.0.16106.4). Ich musste lediglich die App / Benutzeroberfläche neu starten. Nur das Trennen des Servers und das erneute Verbinden funktionierten nicht.
Joedotnot
7

Dies ist ein Problem, wenn Sie 2008 Management Studio-Tools verwenden, um eine Verbindung zu einer SQL 2012-Instanz herzustellen.

Dies tritt häufig auf, wenn ich mit SQL 2008 auf einem Server arbeite und versuche, schnell einen anderen Server abzufragen, auf dem SQL 2012 ausgeführt wird.

Normalerweise behalte ich meine persönliche Workstation auf der neuesten Version von Management Studio (in diesem Fall 2012) und kann von dort aus alle Server verwalten.

Justin Manning
quelle
6

Der Grund für die Fehlermeldung ist, dass SQL in Ihrer alten SQL Server-Version keine neuen Funktionen anzeigen konnte.

Bitte aktualisieren Sie Ihre Client-SQL-Version auf die gleiche wie Ihre Server-SQL-Version

Samith C Valsalan
quelle
2

Die vorgeschlagenen Ursachen haben sich nun als größtenteils unmöglich erwiesen. Ich verwende SSMS V17.9.2 gegen SS 2014 und habe immer noch das Problem. Speicherprobleme bestehen mit diesem Tool seit mindestens 2006, als ich anfing, SSMS zu verwenden.

Ja, MS möchte Diagramme entfernen, aber Benutzer lassen sie nicht zu. Ich habe das Gefühl, dass sie keines dieser Probleme beheben werden, weil sie möchten, dass Benutzer das Tool so satt haben, dass genug von ihnen es nicht mehr verwenden und es ganz aufgeben können.

Ein Neustart ist immer noch eine Problemumgehung, wenn Sie dies mehrmals täglich tun können.

bielawski
quelle
1

Sie müssen eine neue Version von Management Studio verwenden. Außerdem wird eine Fehlermeldung 29506 angezeigt. Sie sollten daher als Administrator für die Einrichtung ausgeführt werden. Schauen Sie sich diese Seite an. http://shareis.com/post/29506-management-studio-express

Çetin DOĞU
quelle
1

Ich hatte eine ähnliche Erfahrung mit der Verwendung von SMO über C # mit dem Stack-Trace:

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

Es stellte sich heraus, dass meine Versionen von CLR / NCLI / SMO 10.50.1600.1 waren. Durch ein Upgrade auf 10.53.6000.34 wurde das Problem behoben, sodass das SMO 2008R2 viele Funktionen mit Servern von 2012 und 2014 ausführen kann.

Holen Sie sie sich aus dem Feature Pack

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

GilesDMiddleton
quelle
1
Ich fand diesen Link für SQL Server 2008 R2 Service Pack 3 klarer in Bezug auf das Installationsprogramm zum Herunterladen von support.microsoft.com/en-us/kb/2979597
Justin
0

Ich habe in SQL-Server 2016 ein Problem mit Diagramm und Schema gefunden, das für das Thema hilfreich sein könnte. Ich habe das Diagramm bearbeitet (bezogen auf und mit vielen Tabellen des "sales" -Schemas) und eine neue Tabelle hinzugefügt , ABER ich habe vergessen, es als Schema zu deklarieren, also war es mit dem Standard "dbo". Als ich dann zu dem Schema "sales" zurückkehrte und es öffnete und versuchte, eine vorhandene Tabelle hinzuzufügen ... Bluf! DAS hat genau den gleichen Fehler ausgelöst, der in diesem Thread beschrieben wurde. Ich habe sogar versucht, das Problem zu umgehen (Tabelle ziehen), aber es hat nicht funktioniert. Plötzlich bemerkte ich, dass das Schema falsch war, ich aktualisierte es, versuchte es erneut und Eureka! Das Problem war sofort weg ... Grüße.

Felix Guillermo Ledesma
quelle
1
Willkommen bei Stack Overflow ! Bitte lesen Sie Wie schreibe ich eine gute Antwort ?
Saurabh Bhandari
0

Es ist ein sehr altes Problem mit eingelösten Inhalten. MS plant, Diagramme aus SSMS zu entfernen, daher ist ihnen dies egal. Auf jeden Fall gibt es eine Lösung.

Schließen Sie einfach die Registerkarte Diagramme und öffnen Sie sie erneut. Funktioniert mit SSMS 18.2.

Tomas Vileikis
quelle