指数数组的边界之外。(Microsoft.SqlServer.smo)


91

我正在使用SQL Server 2008 R2。一切正常。但是最近,我更改了托管服务器,并得知它们已安装SQL Server 2012在服务器上。

现在,问题是通过SQL Server 2008 R2,与Server Database连接后,当我单击任何表名或存储过程时,我会收到错误消息:Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

所以,这是我方面还是服务器方面的任何问题?以及如何预防此问题?


@ paul.abbott,是强制性的吗?
Jeeten Parmar 2014年

您可以继续使用它,它将无法使用新功能。
Samith C Valsalan

1
在我们的案例中,我们在SQL 2016中恢复了2008 R2数据库,并且在尝试以任何方式使用该图时都遇到了相同的问题。在以管理员身份运行SSMS 2016 13.0.15900.1之后,它解决了该问题。去搞清楚!
马克·罗素

Answers:


51

从2008升级到2012的SqlServer管理工作室

或下载SqlServer Management Studio的Service Pack并更新可能会解决您的问题

您可以从下面的链接下载SQL Server Management Studio 2012

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


目前还没有解决方法。我在Management Studio的所有版本中(包括2018)都出现了此错误-很遗憾这个错误已经存在很多年了。
MeTitus

98

重新启动Management Studio对我有用。


5
似乎“越界”错误是由Studio缓存数据库结构引起的。对结构进行足够的更改后,它与缓存版本的匹配将很差,并开始生成错误。重新启动将重建缓存。
大卫·奥斯汀

那是真正的问题,我从来没有时间更新我的答案。更新修复的bug你
Abisoye Falabi

41

对我来说,此问题在SSMS版本2016(13.0.16100.1)中仍然存在。

一个不错的解决方法是不使用“右键单击”->“添加表...”对话框,而只需将要添加的表从“对象资源管理器”拖到“图”表面上。拖动鼠标时,图标变为“添加”符号,并在释放鼠标时添加表格。

每次都必须关闭SSMS。


v18.0预览版4不再提供图表,希望它们会很快回来!
MeanGreen

21

重新启动工作!我在sql server 2016上发现相同的错误将新表添加到数据库图中,重新启动了sql server management studio,终于解决了。


是。我在SQL Server 2016 Management Studio(v 13.0.16106.4)上遇到此错误,我要做的就是重新启动App / UI。只是断开服务器连接并重新连接是行不通的。
joedotnot

7

如果您使用的是2008 Management Studio工具来连接到SQL 2012实例,则会出现此问题。

如果我在使用SQL 2008的一台服务器上工作,并尝试快速查询另一台正在运行SQL 2012的服务器,我会遇到很多事情。

我通常将个人工作站保持在最新版本的Management Studio(在本例中为2012)上,并能够从那里管理所有服务器。


6

错误消息背后的原因是,SQL无法在您的旧SQL Server版本中显示新功能。

请将您的客户端SQL版本升级为与服务器Sql版本相同


2

现在证明建议的原因几乎是不可能的。我在SS 2014上运行SSMS V17.9.2,仍然有问题。至少从2006年我开始使用SSMS以来,此工具就存在内存问题。

是的,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.160.1。将它们升级到10.53.6000.34可以解决此问题-因此,2008R2 SMO可以对2012和2014服务器进行很多处理。

从功能包中获取它们

https://www.microsoft.com/zh-CN/download/details.aspx?id=44272


1
我发现对于SQL Server 2008 R2 Service Pack 3而言,此链接在下载哪种安装程序方面更加清晰,可以下载到support.microsoft.com/en-us/kb/2979597
Justin

0

我发现SQL-Server 2016中的关系图和架构存在问题,可能对该主题有用。我正在编辑图表(与“ sales”模式有关并与之相关,并添加了许多表),但添加了一个表,但是忘记声明它为模式,因此默认为“ dbo”。然后,当我返回并打开模式“ sales”并尝试添加一个现有表时……Bluf!触发与该线程中描述的错误完全相同的错误。我什至尝试了解决方法(拖动表),但是没有用。突然我发现该架构不正确,我对其进行了更新,再次尝试,然后找到Eureka!问题马上消失了。



0

兑现内容是一个非常老的问题。MS计划从SSMS中删除图表,因此他们对此并不在意。无论如何,解决方案是存在的。

只需关闭“图表”选项卡,然后再次将其打开。与SSMS 18.2一起使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.