Список був за межами масиву. (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
У нашому випадку ми відновили базу даних R2 2008 у SQL 2016, і у нас виникла та сама проблема, намагаючись будь-яким чином використовувати діаграму. Після запуску SSMS 2016 13.0.15900.1 як адміністратор вирішив проблему. Піди розберися!
Марк Руссель,

Відповіді:


51

Оновіть свою студію управління SqlServer з 2008 по 2012 рік

Або завантажте пакети оновлень SqlServer Management Studio і, можливо, оновлення вирішить ваше рішення

Ви можете завантажити SQL Server Management Studio 2012 за посиланням нижче

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


Поки цього немає виправлення. У мене була ця помилка у всіх версіях студії управління, включаючи 2018 рік - прикро, що ця помилка існує вже стільки років.
MeTitus

98

Перезапуск студії управління працював у мене.


5
Здається, помилка "поза межами" викликана студійним кешуванням структури бази даних. Після того, як ви внесете достатньо змін до структури, вона погано відповідатиме кешованій версії та почне генерувати помилку. Перезапуск відновлює кеш.
Девід Остін,

Це було справжнім питанням, я ніколи не встигав оновити свою відповідь. Оновлення виправляє помилку ти
Абісоє Фалабі

41

Для мене ця проблема все ще існує із SSMS версії 2016 (13.0.16100.1).

Пристойним обхідним шляхом є не використання діалогового вікна "Клацніть правою кнопкою миші" -> "Додати таблицю ...", а просто перетягніть таблицю, яку потрібно додати, з Провідника об'єктів на поверхню Діаграми. Під час перетягування піктограма миші змінюється на символ "додати", і таблиця додається, коли ви відпускаєте мишу.

Потрібно щоразу закривати SSMS.


Схеми більше не доступні v18.0 preview 4, сподіваємось, вони скоро повернуться!
MeanGreen

21

Перезапущено! Я виявив ту саму помилку, щоб додати нову таблицю до моєї діаграми бази даних на SQL Server 2016, перезапущена студія управління SQL Server, нарешті, вирішена.


Так. У мене сталася ця помилка в SQL Server 2016 Management Studio (v 13.0.16106.4). Мені потрібно було лише перезапустити програму / інтерфейс користувача. Просто відключення сервера та повторне підключення не працювали.
joedotnot

7

Це проблема, якщо ви використовуєте інструменти студії управління 2008 для підключення до екземпляра SQL 2012.

Я відчуваю це багато, якщо працюю на одному сервері з SQL 2008 і намагаюся швидко запитати інший сервер, на якому запущена SQL 2012.

Зазвичай я тримаю свою особисту робочу станцію в найновішій версії студії управління (у цьому випадку - 2012), і я можу адмініструвати всі сервери звідти.


6

Причиною повідомлення про помилку є те, що SQL не міг показати нові функції у вашій старій версії сервера SQL.

Будь ласка, оновіть вашу клієнтську версію 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
Я виявив, що це посилання для SQL Server 2008 R2 з пакетом оновлень 3 є більш зрозумілим з точки зору того, який інсталятор завантажити support.microsoft.com/en-us/kb/2979597
Джастін,

0

Я знайшов проблему з діаграмою та схемою в SQL-Server 2016, яка може бути корисною для суб'єкта. Я редагував схему (пов’язану зі схемою "продажу" та з великою кількістю таблиць) і додав нову таблицю, АЛЕ забув оголосити її схемою, так було за замовчуванням "dbo". Потім, коли я повернувся до і відкрив схему "продаж" і спробував додати існуючу таблицю ... Bluf! ТО, що спричинило точно таку ж помилку, описану в цій темі. Я навіть спробував обійти (перетягнути таблицю), але це не спрацювало. Раптом я помітив, що схема неправильна, оновив її, спробував ще раз, і Еврика! проблема була негайно зник ... З повагою.


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

0

Це дуже стара проблема з кешованим вмістом. Держави-члени планують видаляти схеми із СУБД, тому їм це байдуже. У будь-якому випадку, рішення існує.

Просто закрийте вкладку Схеми та відкрийте її знову. Працює з SSMS 18.2.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.