ดัชนีอยู่นอกขอบเขตของอาร์เรย์. (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.