ดัชนีอยู่นอกขอบเขตของอาร์เรย์. (Microsoft.SqlServer.smo)


93

ฉันใช้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 ในฐานะผู้ดูแลระบบจะแก้ไขปัญหาได้ ไปคิด!
— 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

มันเป็นปี 2020 และยังไม่ได้รับการแก้ไข
— Antonín Lejsek

106

การรีสตาร์ท Management Studio ใช้ได้ผลสำหรับฉัน


8
ดูเหมือนว่าข้อผิดพลาด "นอกขอบเขต" เกิดจาก Studio แคชโครงสร้างฐานข้อมูล หลังจากที่คุณเปลี่ยนแปลงโครงสร้างเพียงพอแล้วโครงสร้างจะตรงกับเวอร์ชันแคชไม่ดีและเริ่มสร้างข้อผิดพลาด การรีสตาร์ทจะสร้างแคชใหม่
— David Austin

นั่นคือปัญหาที่แท้จริงฉันไม่เคยมีเวลาอัปเดตคำตอบของฉันเลย การอัปเดตแก้ไขข้อบกพร่องของคุณ
— Abisoye Falabi

ฉันยังมีข้อผิดพลาดเดียวกันกับ SQL Server Management Studio (SSMS) เวอร์ชัน v18.6 วิธีแก้ปัญหาคือออกจากแอพแล้วเริ่มใหม่อีกครั้ง
— Jonathan Mendoza

ฉันพบปัญหานี้เมื่อฉันใช้ SQL Server Management Studio v.18 และการปิดแอปและเปิดอีกครั้งเพื่อแก้ไขปัญหาให้ฉัน
— J. Zacka

43

สำหรับฉันปัญหานี้ยังคงมีอยู่ใน SSMS เวอร์ชัน 2016 (13.0.16100.1)

วิธีแก้ปัญหาที่ดีคืออย่าใช้กล่องโต้ตอบ 'คลิกขวา' -> 'เพิ่มตาราง ... ' แต่เพียงลากตารางที่คุณต้องการเพิ่มจาก Object Explorer ไปยังพื้นผิวไดอะแกรม ในขณะที่ลากไอคอนเมาส์จะเปลี่ยนเป็นสัญลักษณ์ 'เพิ่ม' และตารางจะถูกเพิ่มเมื่อคุณปล่อยเมาส์

เต้นต้องปิด SSMS ทุกครั้ง


ไดอะแกรมไม่สามารถใช้งานได้อีกต่อไป v18.0 ดูตัวอย่าง 4 หวังว่าพวกเขาจะกลับมาเร็ว ๆ นี้!
— MeanGreen

25

เริ่มใหม่ทำงาน! ฉันพบข้อผิดพลาดเดียวกันในการเพิ่มตารางใหม่ในไดอะแกรมฐานข้อมูลของฉันบนเซิร์ฟเวอร์ sql 2016 รีสตาร์ทสตูดิโอการจัดการเซิร์ฟเวอร์ sql ในที่สุดก็แก้ไขได้


ใช่. ฉันมีข้อผิดพลาดนี้ใน SQL Server 2016 Management Studio (v 13.0.16106.4) สิ่งที่ฉันต้องทำคือรีสตาร์ทแอพ / UI เพียงแค่ตัดการเชื่อมต่อเซิร์ฟเวอร์และเชื่อมต่อใหม่ไม่ได้ผล
— joedotnot

7

นี่เป็นปัญหาหากคุณกำลังใช้เครื่องมือสตูดิโอจัดการ 2008 เพื่อเชื่อมต่อกับอินสแตนซ์ SQL 2012

ฉันพบสิ่งนี้มากถ้าฉันทำงานบนเซิร์ฟเวอร์หนึ่งเครื่องกับ SQL 2008 และพยายามค้นหาเซิร์ฟเวอร์อื่นที่ใช้ SQL 2012 อย่างรวดเร็ว

โดยปกติฉันจะเก็บเวิร์กสเตชันส่วนตัวไว้ในสตูดิโอการจัดการเวอร์ชันล่าสุด (ในกรณีนี้ในปี 2555) และสามารถจัดการเซิร์ฟเวอร์ทั้งหมดได้จากที่นั่น


6

เหตุผลเบื้องหลังข้อความแสดงข้อผิดพลาดคือ SQL ไม่สามารถแสดงคุณลักษณะใหม่ในเซิร์ฟเวอร์ SQL เวอร์ชันเก่าของคุณ

โปรดอัปเกรดเวอร์ชัน SQL ไคลเอนต์ของคุณให้เหมือนกับเวอร์ชัน SQL ของเซิร์ฟเวอร์ของคุณ


2

ขณะนี้สาเหตุที่แนะนำได้รับการพิสูจน์แล้วว่าส่วนใหญ่เป็นไปไม่ได้ ฉันใช้ SSMS V17.9.2 เทียบกับ SS 2014 และยังคงมีปัญหา เครื่องมือนี้มีปัญหาเกี่ยวกับหน่วยความจำตั้งแต่อย่างน้อยปี 2549 เมื่อฉันเริ่มใช้ SSMS

ใช่ MS 'ต้องการ' กำจัดการสร้างไดอะแกรม แต่ผู้ใช้ไม่ยอม ฉันรู้สึกว่าพวกเขาจะไม่แก้ไขปัญหาใด ๆ เหล่านี้เพราะพวกเขาต้องการให้ผู้ใช้เบื่อหน่ายกับเครื่องมือมากพอที่พวกเขาจะเลิกใช้มันและพวกเขาก็สามารถละทิ้งมันได้ทั้งหมด

การรีสตาร์ทยังคงเป็นวิธีแก้ปัญหาหากคุณสามารถยืนได้หลาย ๆ ครั้งต่อวัน



1

ฉันมีประสบการณ์ที่คล้ายกันกับการใช้ SMO ผ่าน C # กับ stack trace:

[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 Service Pack 3 เพื่อให้ชัดเจนยิ่งขึ้นในแง่ของสิ่งที่ติดตั้งที่จะดาวน์โหลดsupport.microsoft.com/en-us/kb/2979597
— Justin

0

ฉันพบปัญหาเกี่ยวกับ Diagram และ Schema ใน SQL-Server 2016 ซึ่งอาจเป็นประโยชน์กับหัวข้อนี้ ฉันกำลังแก้ไขแผนภาพ (เกี่ยวข้องกับสคีมา "ขาย" และมีตารางจำนวนมาก) และเพิ่มตารางใหม่แต่ลืมที่จะประกาศสคีมาจึงเป็นไปตามค่าเริ่มต้น "dbo" จากนั้นเมื่อฉันกลับไปและเปิดสคีมา "การขาย" และพยายามเพิ่มตารางที่มีอยู่ ... บลัฟ! ที่ทริกเกอร์ข้อผิดพลาดเดียวกันกับที่อธิบายไว้ในเธรดนั้น ฉันได้ลองวิธีแก้ปัญหาแล้ว (ลากตาราง) แต่ไม่ได้ผล ทันใดนั้นฉันสังเกตเห็นว่าสคีมาไม่ถูกต้องฉันอัปเดตลองอีกครั้งและ Eureka! ปัญหาก็หมดไปทันที ... ขอแสดงความนับถือ.


1
ยินดีต้อนรับสู่Stack Overflow ! โปรดอ่าน ฉันจะเขียนคำตอบที่ดีได้อย่างไร?
— Saurabh Bhandari

0

เป็นปัญหาเก่ามากเกี่ยวกับเนื้อหาที่เป็นเงินสด MS วางแผนที่จะลบไดอะแกรมออกจาก SSMS ดังนั้นพวกเขาจึงไม่สนใจเรื่องนี้ อย่างไรก็ตามทางออกมีอยู่

เพียงแค่ปิดแท็บไดอะแกรมแล้วเปิดอีกครั้ง ทำงานร่วมกับ SSMS 18.2


0

คุณต้องใช้เวอร์ชันล่าสุดกับ SSMS

คุณสามารถตรวจสอบบิวด์ล่าสุดได้จากหน้านี้ https://sqlserverbuilds.blogspot.com/


ยินดีต้อนรับที่นี่ @Osman Taskiran คุณช่วยกรุณาลงรายละเอียดโพสต์ของคุณและอธิบายความสัมพันธ์ระหว่าง SSMS (Management Studio) กับคำถาม (ตามที่พูดถึงดัชนี ฯลฯ )
— Useme Alehosaini
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.