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

Posted

技术标签:

【中文标题】指数数组的边界之外。 (Microsoft.SqlServer.smo)【英文标题】:Index was outside the bounds of the Array. (Microsoft.SqlServer.smo) 【发布时间】:2014-06-05 19:31:59 【问题描述】:

我正在使用SQL Server 2008 R2。它工作正常。但是最近,我改变了我的托管服务器,我知道他们已经在服务器上安装了SQL Server 2012。 现在,问题是通过SQL Server 2008 R2 连接服务器数据库后,当我单击任何表名或存储过程时,我收到错误:Index was outside the bounds of the array. (Microsoft.SqlServer.smo) 那么,我这边有什么问题还是来自服务器端???以及如何防止这个问题?

【问题讨论】:

@paul.abbott,是强制的吗??? 你可以继续使用它,新功能将不可用。 在我们的例子中,我们在 SQL 2016 中恢复了一个 2008 R2 数据库,我们在尝试以任何方式使用图表时都遇到了同样的问题。以管理员身份运行 SSMS 2016 13.0.15900.1 后,它解决了问题。去图吧! 【参考方案1】:

重新启动 Management Studio 对我有用。

【讨论】:

似乎“越界”错误是由 Studio 缓存数据库结构引起的。在对结构进行足够的更改后,它将与缓存的版本不匹配并开始生成错误。重启会重建缓存。 这是真正的问题,我从来没有时间更新我的答案。更新修复了你的错误 我在使用 v18.6 版本的 SQL Server Management Studio (SSMS) 时也遇到了同样的错误。解决方法是退出应用程序并重新启动。 我在使用 SQL Server Management Studio v.18 时遇到了这个问题,关闭应用程序并再次打开它为我解决了这个问题。【参考方案2】:

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

或者 下载 SqlServer Management Studio 的服务包并更新可能会解决您的解决方案

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

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

【讨论】:

目前还没有解决办法。我在包括 2018 年在内的所有管理工作室版本中都遇到了这个错误 - 很遗憾这个错误已经存在了这么多年。 2020年了,还没有修复。【参考方案3】:

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

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

胜过每次都必须关闭 SSMS。

【讨论】:

图表不再可用 v18.0 预览版 4,希望它们很快就会回来! 它们在 18.1 及更高版本中再次可用。你的愿望已经实现(它们自 17.0 以来已被删除,但似乎受到大众的需求,请参阅mssqltips.com/sqlservertip/6291/…)。【参考方案4】:

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

【讨论】:

是的。我在 SQL Server 2016 Management Studio (v 13.0.16106.4) 上遇到了这个错误,我所要做的就是重新启动应用程序/用户界面。只是断开服务器并重新连接不起作用。【参考方案5】:

如果您使用 2008 管理工作室工具连接到 SQL 2012 实例,则会出现此问题。

如果我在一台运行 SQL 2008 的服务器上工作,并尝试快速查询另一台运行 SQL 2012 的服务器,我会经常遇到这种情况。

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

现在证明建议的原因几乎是不可能的。我正在针对 SS 2014 运行 SSMS V17.9.2 并且仍然存在问题。至少从 2006 年我开始使用 SSMS 开始,这个工具就存在内存问题。

是的,MS '想要' 摆脱图表,但用户不会让他们这样做。我有一种感觉,他们永远不会解决任何这些问题,因为他们希望用户厌倦了这个工具,以至于有足够多的人放弃使用它,他们可以完全放弃它。

如果您每天可以忍受多次重新启动,那么重新启动仍然是一种解决方法。

【讨论】:

【参考方案8】:

您必须使用新版本的 Management Studio。而且您还会收到错误 29506。因此您应该以管理员身份运行以进行设置。 看看这个网站。 http://shareis.com/post/29506-management-studio-express

【讨论】:

【参考方案9】:

我在通过 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

【讨论】:

我发现这个 SQL Server 2008 R2 Service Pack 3 的链接在下载什么安装程序方面更加清晰support.microsoft.com/en-us/kb/2979597【参考方案10】:

我发现 SQL-Server 2016 中的图表和架构存在一个问题,该问题可能对该主题有用。 我正在编辑图表(与“销售”模式相关并且有很多表)并添加了一个 new 表,但忘记声明它的模式,所以它使用默认的“dbo” .然后,当我返回并打开模式“sales”并尝试添加一个现有表时...... Bluf!触发了与该线程中描述的完全相同的错误。 我什至尝试了解决方法(拖动表格),但没有奏效。突然我注意到架构不正确,我更新了它,再试一次,Eureka!问题马上就解决了……问候。

【讨论】:

欢迎来到Stack Overflow!请阅读How do I write a good answer ?【参考方案11】:

兑现内容是一个非常古老的问题。 MS 计划从 SSMS 中删除图表,所以他们不关心这个。无论如何,解决方案是存在的。

只需关闭图表选项卡并再次打开它。适用于 SSMS 18.2。

【讨论】:

【参考方案12】:

您必须使用最新版本的 SSMS

您可以通过此页面查看最新版本 https://sqlserverbuilds.blogspot.com/

【讨论】:

欢迎来到@Osman Taskiran,您能否详细说明您的帖子并解释SSMS(Management Studio)与问题之间的关系(因为它正在谈论索引等)【参考方案13】:

解决方法:忽略错误

只是为了表明错误在SSMS版本18.9.2中没有太大作用,从对象资源管理器中拖动要在图表中显示的表格 选项卡并等待它完成加载,然后再开始使用它。

【讨论】:

用户使用的是旧版本的 Management Studio。

以上是关于指数数组的边界之外。 (Microsoft.SqlServer.smo)的主要内容,如果未能解决你的问题,请参考以下文章

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

城市边界线预测(根据灯光指数)(PUL)

使用 UICollectionViewFlowLayout 时在 UICollectionViewCell 的边界之外绘制

如果值在边界之外,则边界上的散点图绘制

如何将图例放在字段集边界之外

如何将 UICollectionViewCell 的可触摸区域扩展到其边界之外?