Список був за межами масиву. (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.