programing

인덱스가 배열 범위를 벗어났습니다. (Microsoft)SqlServer.smo)

muds 2023. 5. 1. 22:05
반응형

인덱스가 배열 범위를 벗어났습니다. (Microsoft)SqlServer.smo)

는 사용중을 하고 있습니다.SQL Server 2008 R2잘 작동하고 있습니다.하지만한 것을 알게 .SQL Server 2012서버에 있습니다.

이제 는 서버 하여 서버 에 연결한 후의 입니다.SQL Server 2008 R2테이블 이름 또는 저장 프로시저를 클릭하면 다음 오류가 발생합니다.Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

그래서, 제 쪽에서 문제가 있거나 서버 쪽에서 문제가 있습니까?이 문제를 어떻게 방지할 수 있습니까?

Management Studio를 다시 시작하는 것이 제게 도움이 되었습니다.

2008년에서 2012년으로 SqlServer 관리 스튜디오 업그레이드

또는 SqlServer Management Studio의 서비스 팩을 다운로드하여 업데이트하면 솔루션이 해결됩니다.

아래 링크에서 SQL Server Management Studio 2012를 다운로드할 수 있습니다.

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

SSMS 버전 2016(13.0.16100.1)에 이 문제가 여전히 존재합니다.

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

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

다시 시작했습니다!sql server 2016의 데이터베이스 다이어그램에 새 테이블을 추가하는 것과 동일한 오류를 발견하고 sql server management studio를 다시 시작하여 마침내 해결되었습니다.

2008 관리 스튜디오 도구를 사용하여 SQL 2012 인스턴스에 연결하는 경우 이 문제가 발생합니다.

SQL 2008을 사용하여 한 서버에서 작업하고 SQL 2012를 실행 중인 다른 서버를 빠르게 쿼리하려고 할 때 이 문제가 자주 발생합니다.

저는 보통 개인 워크스테이션을 최신 버전의 관리 스튜디오(이 경우 2012년)에 보관하며, 여기서 모든 서버를 관리할 수 있습니다.

오류 메시지 뒤에 있는 이유는 이전 SQL 서버 버전에서 SQL이 새 기능을 표시하지 못했기 때문입니다.

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

솔루션:오류 무시

SSMS 버전 18.9.2에서 오류가 크게 발생하지 않는다는 것을 보여주기 위해 개체 탐색기 탭에서 다이어그램에 표시할 테이블을 끌어다 놓고 로드가 완료될 때까지 기다린 후 사용하십시오.

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

네, MS는 다이어그램 작성을 없애길 원하지만 사용자들은 허락하지 않습니다.저는 그들이 사용자들이 도구에 질려서 충분히 사용을 중단하고 완전히 포기하기를 원하기 때문에 이러한 문제들을 절대로 해결하지 못할 것이라고 생각합니다.

하루에도 여러 번 다시 시작하는 것을 견딜 수 있다면 다시 시작하는 것은 여전히 해결 방법입니다.

새 버전의 Management Studio를 사용해야 합니다.또한 오류 29506이 발생하므로 설치를 위해 관리자로 실행해야 합니다.이 사이트를 보세요.http://shareis.com/post/29506-management-studio-express

스택 추적에서 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로 업그레이드함으로써 2008 R2 SMO는 2012년과 2014년 서버에서 많은 작업을 수행할 수 있었습니다.

기능 팩에서 가져오기

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

SQL-Server 2016에서 Diagram and Schema에서 해당 주제에 유용할 수 있는 문제를 발견했습니다.다이어그램("판매" 스키마와 관련된, 그리고 많은 테이블이 있는)을 편집하다가 새 테이블을 추가했지만 스키마를 선언하는 것을 잊어버려서 기본 "dbo"로 되어 있었습니다.그런 다음 스키마 "판매"로 돌아가서 기존 테이블을 추가하려고 했습니다.블루프! 그것은 그 스레드에 설명된 것과 정확히 같은 오류를 트리거했습니다.저는 해결책까지 시도해봤지만 소용이 없었습니다.갑자기 스키마가 잘못되었다는 것을 알아차리고 업데이트하고 다시 시도해보니 유레카! 문제는 즉시 해결되었습니다...안부 전해요.

현금화된 콘텐츠에 대한 아주 오래된 문제입니다.MS는 SSMS에서 다이어그램을 제거할 계획입니다. 그래서 그들은 이것에 대해 신경 쓰지 않습니다.어쨌든 해결책은 존재합니다.

다이어그램 탭을 닫았다가 다시 열기만 하면 됩니다.SSMS 18.2와 함께 작동합니다.

SSMS와 함께 최신 버전을 사용해야 합니다.

이 페이지 https://sqlserverbuilds.blogspot.com/ 에서 최신 빌드를 확인할 수 있습니다.

언급URL : https://stackoverflow.com/questions/23202414/index-was-outside-the-bounds-of-the-array-microsoft-sqlserver-smo

반응형