指数数组的边界之外。 (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)
使用 UICollectionViewFlowLayout 时在 UICollectionViewCell 的边界之外绘制