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?


@ 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


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.


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.


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.


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.


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


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.



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


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.



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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.