Indeks znajdował się poza granicami tablicy. (Microsoft.SqlServer.smo)

91

Używam SQL Server 2008 R2. Działa dobrze. Ale ostatnio zmieniłem serwer hostingowy i dowiedziałem się, że zainstalowałem SQL Server 2012na serwerze.

Problem polega na tym, że po połączeniu się z bazą danych serwera za pośrednictwem SQL Server 2008 R2, kiedy klikam nazwę dowolnej tabeli lub procedury składowanej Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

, pojawia się błąd: Czy jest jakiś problem po mojej stronie, czy po stronie serwera? i jak mogę zapobiec temu problemowi?

Jeeten Parmar
źródło
@ paul.abbott, czy to jest obowiązkowe ???
Jeeten Parmar
Możesz iść dalej, nowa funkcja nie będzie z nim dostępna.
Samith C Valsalan
1
W naszym przypadku przywróciliśmy bazę danych 2008 R2 w SQL 2016 i mieliśmy ten sam problem, próbując w jakikolwiek sposób użyć diagramu. Po uruchomieniu SSMS 2016 13.0.15900.1 jako administrator rozwiązał problem. Domyśl!
Marc Roussel

Odpowiedzi:

51

Zaktualizuj swoje studio zarządzania SqlServer z 2008 do 2012

Lub Pobierz pakiety serwisowe SqlServer Management Studio i zaktualizuj prawdopodobnie rozwiązanie problemu

Możesz pobrać SQL Server Management studio 2012 z linku poniżej

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

Md. Rajibul Ahsan
źródło
Nie ma jeszcze na to rozwiązania. Miałem ten błąd we wszystkich wersjach Management Studio, w tym w 2018 - szkoda, że ​​ten błąd istnieje od tylu lat.
MeTitus
Jest rok 2020 i nadal nie jest to naprawione.
Antonín Lejsek
100

Ponowne uruchomienie Management Studio zadziałało dla mnie.

Abisoye Falabi
źródło
6
Wygląda na to, że błąd „poza zakresem” jest spowodowany przez buforowanie struktury bazy danych przez Studio. Po wprowadzeniu wystarczającej liczby zmian w strukturze będzie ona słabo dopasowana do wersji z pamięci podręcznej i rozpocznie generowanie błędu. Ponowne uruchomienie odbudowuje pamięć podręczną.
David Austin,
To był prawdziwy problem, nigdy nie miałem czasu, aby zaktualizować swoją odpowiedź. Aktualizacja naprawia błąd
Abisoye Falabi
Wystąpił również ten sam błąd z wersją 18.6 programu SQL Server Management Studio (SSMS). Obejście polega na zamknięciu aplikacji i ponownym uruchomieniu.
Jonathan Mendoza
42

Dla mnie ten problem nadal występuje w SSMS w wersji 2016 (13.0.16100.1).

Przyzwoitym obejściem jest nieużywanie okna dialogowego „Kliknięcie prawym przyciskiem” -> „Dodaj tabelę…”, ale po prostu przeciągnięcie tabeli, którą chcesz dodać z Eksploratora obiektów, na powierzchnię Diagramu. Podczas przeciągania ikona myszy zmienia się w symbol „dodaj”, a tabela jest dodawana po zwolnieniu przycisku myszy.

Pokonuje konieczność zamykania SSMS za każdym razem.

MeanGreen
źródło
Diagramy nie są już dostępne w wersji 18.0 w wersji zapoznawczej 4, miejmy nadzieję, że wkrótce wrócą!
MeanGreen,
22

Restart działał! Znalazłem ten sam błąd, aby dodać nową tabelę do mojego diagramu bazy danych na serwerze SQL 2016, zrestartowałem studio zarządzania serwerem SQL, w końcu rozwiązany.

mernig
źródło
Tak. Wystąpił ten błąd w programie SQL Server 2016 Management Studio (wersja 13.0.16106.4). Wszystko, co musiałem zrobić, to ponownie uruchomić aplikację / interfejs użytkownika. Samo odłączenie serwera i ponowne połączenie nie działa.
joedotnot
7

Jest to problem, jeśli używasz narzędzi studia zarządzania 2008 do łączenia się z instancją SQL 2012.

Doświadczam tego często, gdy pracuję na jednym serwerze z SQL 2008 i próbuję szybko wysłać zapytanie do innego serwera, na którym jest uruchomiony SQL 2012.

Zwykle używam mojej osobistej stacji roboczej w najnowszej wersji programu Management Studio (w tym przypadku 2012) i mogę z niej administrować wszystkimi serwerami.

Justin Manning
źródło
6

Przyczyną tego komunikatu o błędzie jest to, że SQL nie mógł pokazać nowych funkcji w starej wersji serwera SQL.

Zaktualizuj wersję SQL klienta do tej samej, co wersja Sql serwera

Samith C. Valsalan
źródło
2

Obecnie udowodniono, że sugerowane przyczyny są w większości niemożliwe. Używam SSMS V17.9.2 przeciwko SS 2014 i nadal mam problem. W przypadku tego narzędzia problemy z pamięcią istniały od co najmniej 2006 roku, kiedy zacząłem używać SSMS.

Tak, MS „chce” pozbyć się tworzenia diagramów, ale użytkownicy im na to nie pozwalają. Mam wrażenie, że nigdy nie naprawią żadnego z tych problemów, ponieważ chcą, aby użytkownicy byli tak zmęczeni narzędziem, że wystarczająca liczba z nich przestanie go używać i może całkowicie porzucić.

Ponowne uruchomienie jest nadal obejściem, jeśli możesz znieść to wiele razy dziennie.

bielawski
źródło
1

Miałem podobne doświadczenie z używaniem SMO przez C # ze śladem stosu:

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

Okazało się, że moje wersje CLR / NCLI / SMO to 10.50.1600.1. Aktualizacja do 10.53.6000.34 rozwiązała problem - w ten sposób 2008R2 SMO mógł robić wiele rzeczy z serwerami 2012 i 2014.

Pobierz je z pakietu funkcji

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

GilesDMiddleton
źródło
1
Znalazłem ten link dla programu SQL Server 2008 R2 z dodatkiem Service Pack 3, aby być bardziej przejrzyste pod względem tego, co instalator ściągnąć support.microsoft.com/en-us/kb/2979597
Justin
0

Znalazłem problem z diagramem i schematem w SQL-Server 2016, który może być przydatny w tym temacie. Edytowałem diagram (związany ze schematem "sprzedaż" i z wieloma tabelami) i dodałem nową tabelę, ALE zapomniałem zadeklarować schemat, więc było to z domyślnym "dbo". Potem, kiedy wróciłem i otworzyłem schemat „sprzedaż” i spróbowałem dodać istniejącą tabelę… Bluf! TO wywołało dokładnie ten sam błąd, który opisano w tym wątku. Próbowałem nawet obejścia problemu (przeciągnij tabelę), ale nie zadziałało. Nagle zauważyłem, że schemat jest nieprawidłowy, zaktualizowałem go, spróbowałem ponownie i Eureka! problem zniknął natychmiast ... Pozdrawiam.

Felix Guillermo Ledesma
źródło
1
Witamy w Stack Overflow ! Przeczytaj: Jak napisać dobrą odpowiedź ?
Saurabh Bhandari
0

To bardzo stary problem z zawartością płatną. MS planuje usunąć diagramy z SSMS, więc nie przejmują się tym. W każdym razie rozwiązanie istnieje.

Po prostu zamknij kartę Diagramy i otwórz ją ponownie. Działa z SSMS 18.2.

Tomas Vileikis
źródło