Индекс находился вне границ массива. (Microsoft.SqlServer.smo)


91

Я использую SQL Server 2008 R2. Работает нормально. Но недавно я сменил свой хостинг-сервер и узнал, что они установлены SQL Server 2012на сервере.

Теперь проблема в том, что после подключения к серверной базе данных через SQL Server 2008 R2, когда я нажимаю на любое имя таблицы или хранимую процедуру, я получаю сообщение об ошибке: Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

Итак, есть ли проблема с моей стороны или со стороны сервера ??? и как я могу предотвратить эту проблему?


@ paul.abbott, это обязательно ???
Jeeten Parmar

Вы можете продолжить, новая функция будет недоступна.
Samith C Valsalan

1
В нашем случае мы восстановили базу данных 2008 R2 в SQL 2016, и у нас возникла та же проблема, пытаясь каким-либо образом использовать диаграмму. После запуска SSMS 2016 13.0.15900.1 от имени администратора проблема была решена. Иди разберись!
Марк Руссель,

Ответы:


51

Обновите свою студию управления SqlServer с 2008 до 2012

Или загрузите пакеты обновления SqlServer Management Studio и обновите, вероятно, решите ваше решение

Вы можете скачать SQL Server Management Studio 2012 по ссылке ниже

Microsoft® SQL Server® 2012 Экспресс http://www.microsoft.com/en-us/download/details.aspx?id=29062


Для этого пока нет исправления. У меня была эта ошибка во всех версиях Management Studio, включая 2018 - жаль, что эта ошибка существует уже столько лет.
MeTitus

Это 2020 год, и он все еще не исправлен.
Антонин Лейсек,

99

У меня сработал перезапуск Management Studio.


6
Похоже, что ошибка «вне границ» вызвана тем, что Studio кэширует структуру базы данных. После того, как вы внесете достаточно изменений в структуру, она будет плохо соответствовать кэшированной версии и начнет генерировать ошибку. При перезапуске кеш перестраивается.
Дэвид Остин

Это была настоящая проблема, у меня никогда не было времени обновить свой ответ. Обновление исправляет ошибку thou
Abisoye Falabi

У меня также была такая же ошибка с версией SQL Server Management Studio (SSMS) v18.6. Обходной путь - выйти из приложения и начать заново.
Джонатан Мендоса,

42

Для меня эта проблема все еще существует с версией SSMS 2016 (13.0.16100.1).

Приличный обходной путь - не использовать диалоговое окно «Щелкните правой кнопкой мыши» -> «Добавить таблицу ...», а просто перетащить таблицу, которую вы хотите добавить, из проводника объектов на поверхность диаграммы. При перетаскивании значок мыши превращается в символ «добавить», и таблица добавляется, когда вы отпускаете мышь.

Лучше каждый раз закрывать SSMS.


Диаграммы больше не доступны. V18.0 preview 4, надеюсь, они скоро вернутся!
MeanGreen

22

Перезапуск сработал! Я обнаружил ту же ошибку, чтобы добавить новую таблицу в мою схему базы данных на sql server 2016, перезапустить студию управления sql server, наконец, решенную.


Да. У меня была эта ошибка в SQL Server 2016 Management Studio (v 13.0.16106.4) Все, что мне нужно было сделать, это перезапустить приложение / пользовательский интерфейс. Просто отключение сервера и повторное подключение не помогли.
joedotnot 05

7

Это проблема, если вы используете инструменты Management Studio 2008 для подключения к экземпляру SQL 2012.

Я часто сталкиваюсь с этим, если работаю на одном сервере с SQL 2008 и пытаюсь быстро запросить другой сервер, на котором работает SQL 2012.

Обычно я использую на своей персональной рабочей станции последнюю версию Management Studio (в данном случае 2012 г.), и я могу управлять всеми серверами оттуда.


6

Причина сообщения об ошибке заключается в том, что SQL не может показать новые функции в вашей старой версии SQL-сервера.

Обновите клиентскую версию SQL до той же, что и на сервере.


2

В настоящее время доказано, что предложенные причины в основном невозможны. Я использую SSMS V17.9.2 против SS 2014, но проблема не исчезла. Проблемы с памятью у этого инструмента существуют по крайней мере с 2006 года, когда я начал использовать SSMS.

Да, MS «хочет» избавиться от диаграмм, но пользователи этого не позволяют. У меня такое чувство, что они никогда не исправят ни одну из этих проблем, потому что хотят, чтобы пользователи были настолько сыты по горло этим инструментом, что многие из них перестали использовать его и могли отказаться от него полностью.

Перезапуск по-прежнему является обходным решением, если вы можете делать это несколько раз в день.



1

У меня был аналогичный опыт использования SMO через C # с трассировкой стека:

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

Оказалось, что мои версии CLR / NCLI / SMO были 10.50.1600.1. Обновление до 10.53.6000.34 исправило это, что позволило SMO 2008R2 многое делать с серверами 2012 и 2014 годов.

Получите их из пакета функций

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


1
Я обнаружил, что эта ссылка для пакета обновления 3 для SQL Server 2008 R2 более ясна с точки зрения того, какой установщик загружать support.microsoft.com/en-us/kb/2979597
Джастин

0

Я обнаружил проблему с диаграммой и схемой в SQL-Server 2016, которая может быть полезна для субъекта. Я редактировал диаграмму (связанную с множеством таблиц схемы «продаж») и добавил новую таблицу, НО забыл объявить ее схему, так что это было со значением по умолчанию «dbo». Затем, когда я вернулся и открыл схему «продажи» и попытался добавить существующую таблицу ... Блуф! ЭТО Вызвало точно такую ​​же ошибку, описанную в этом потоке. Я даже попробовал обходной путь (перетащить таблицу), но это не сработало. Внезапно я заметил, что схема неверна, я обновил ее, попробовал еще раз, и Эврика! проблема сразу исчезла ... С уважением.


1
Добро пожаловать в Stack Overflow ! Прочтите, пожалуйста, Как мне написать хороший ответ ?
Саураб Бхандари

0

Это очень старая проблема с обналичиваемым контентом. MS планирует удалить диаграммы из SSMS, поэтому им все равно. В любом случае решение существует.

Просто закройте вкладку «Диаграммы» и откройте ее снова. Работает с SSMS 18.2.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.