인덱스 배열의 범위를 벗어난 것입니다. (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 2014

계속 진행할 수 있으며 새로운 기능을 사용할 수 없습니다.
Samith C Valsalan 2015 년

1
우리의 경우 SQL 2016에서 2008 R2 데이터베이스를 복원했으며 어떤 식 으로든 다이어그램을 사용하려고하면 동일한 문제가 발생했습니다. 관리자로 SSMS 2016 13.0.15900.1을 실행 한 후 문제가 해결되었습니다. 그림을 이동!
Marc Roussel

답변:


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

99

Management Studio를 다시 시작하는 것이 저에게 효과적이었습니다.


6
"범위를 벗어난"오류는 Studio에서 데이터베이스 구조를 캐싱하여 발생한 것 같습니다. 구조를 충분히 변경하면 캐시 된 버전과 일치하지 않고 오류가 생성되기 시작합니다. 다시 시작하면 캐시가 다시 작성됩니다.
David Austin

그게 진짜 문제 였고, 대답을 업데이트 할 시간이 없었습니다. thou를 수정에게 버그 업데이트
Abisoye Falabi

SSMS (SQL Server Management Studio) v18.6 버전에서도 동일한 오류가 발생했습니다. 해결 방법은 앱을 종료하고 다시 시작하는 것입니다.
Jonathan Mendoza

42

나에게이 문제는 SSMS 버전 2016 (13.0.16100.1)에도 여전히 존재합니다.

적절한 해결 방법은 '오른쪽 클릭'-> '테이블 추가 ...'대화 상자를 사용하지 않고 개체 탐색기에서 추가하려는 테이블을 다이어그램 표면으로 끌어 오는 것입니다. 드래그하는 동안 마우스 아이콘이 '추가'기호로 바뀌고 마우스를 놓으면 테이블이 추가됩니다.

매번 SSMS를 닫아야하는 것보다 낫습니다.


다이어그램은 더 이상 v18.0 미리보기 4를 사용할 수 없습니다. 곧 다시 제공되기를 바랍니다.
MeanGreen

22

다시 시작되었습니다! SQL Server 2016의 데이터베이스 다이어그램에 새 테이블을 추가하는 동일한 오류를 발견하고 SQL Server Management Studio를 다시 시작하고 마침내 해결했습니다.


예. SQL Server 2016 Management Studio (v 13.0.16106.4)에서이 오류가 발생했습니다. 앱 / UI를 다시 시작하기 만하면됩니다. 서버 연결을 끊고 다시 연결하면 작동하지 않습니다.
joedotnot

7

2008 Management Studio 도구를 사용하여 SQL 2012 인스턴스에 연결하는 경우 이는 문제입니다.

SQL 2008을 사용하는 한 서버에서 작업하고 SQL 2012를 실행하는 다른 서버를 빠르게 쿼리하려고하면이 문제가 많이 발생합니다.

일반적으로 개인 워크 스테이션을 최신 버전의 Management Studio (이 경우 2012)에 유지하고 거기에서 모든 서버를 관리 할 수 ​​있습니다.


6

오류 메시지의 원인은 SQL이 이전 SQL 서버 버전의 새로운 기능을 표시 할 수 없기 때문입니다.

클라이언트 SQL 버전을 서버 SQL 버전과 동일하게 업그레이드하십시오.


2

제안 된 원인은 이제 거의 불가능한 것으로 입증되었습니다. SS 2014에 대해 SSMS V17.9.2를 실행 중이며 여전히 문제가 있습니다. SSMS를 사용하기 시작한 2006 년 이후로이 도구에는 메모리 문제가있었습니다.

예, MS는 다이어그램을 없애고 싶지만 사용자는 허용하지 않습니다. 나는 사용자가 도구에 너무 지쳐서 충분히 사용을 중단하고 완전히 포기할 수 있기를 원하기 때문에 이러한 문제를 해결하지 않을 것이라고 생각합니다.

다시 시작하는 것은 하루에 여러 번 그렇게 할 수 있다면 여전히 해결 방법입니다.



1

스택 추적과 함께 C #을 통해 SMO를 사용하는 것과 비슷한 경험이 있습니다.

[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로 업그레이드하면 문제가 해결되어 2008R2 SMO가 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
Justin

0

주제에 유용 할 수있는 SQL-Server 2016의 다이어그램 및 스키마 관련 문제를 발견했습니다. 나는 다이어그램 ( "sales"스키마와 관련된 많은 테이블과 관련됨)을 편집하고 테이블을 추가 했지만 스키마 선언을 잊었으므로 기본 "dbo"를 사용했습니다. 그런 다음 내가 돌아와서 "sales"스키마를 열고 기존 테이블을 추가하려고했습니다. Bluf! 그 스레드에서 설명한 것과 똑같은 오류가 발생했습니다. 해결 방법을 시도해 보았지만 (표 드래그) 작동하지 않았습니다. 갑자기 나는 스키마가 잘못되었다는 것을 알아 차리고 그것을 업데이트하고 다시 시도했고 Eureka! 문제는 즉시 사라졌습니다 ... 감사합니다.


1
Stack Overflow에 오신 것을 환영합니다 ! 좋은 답변을 어떻게 작성 합니까?를 읽어보십시오 .
Saurabh Bhandari

0

현금화 된 콘텐츠의 매우 오래된 문제입니다. MS는 SSMS에서 다이어그램을 제거 할 계획이므로 신경 쓰지 않습니다. 어쨌든 해결책이 있습니다.

다이어그램 탭을 닫고 다시 엽니 다. SSMS 18.2에서 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.