我正在使用SQL Server 2008 R2
。它工作正常。但最近,我更改了托管服务器,我发现他们已经在服务器上安装了SQL Server 2012
现在,问题是通过SQL Server 2008 R2
连接服务器数据库后,当我点击任何表名或存储过程时,我收到错误:Index was outside the bounds of the array. (Microsoft.SqlServer.smo)
那么,我身边有什么问题,或者来自服务器端???以及如何防止此问题?
答案 0 :(得分:74)
重新启动Management Studio对我有用。
答案 1 :(得分:43)
将您的SqlServer管理工作室从2008年升级到2012年
或者 下载SqlServer Management Studio的Service Pack并更新可能解决您的解决方案
您可以从以下链接下载SQL Server Management studio 2012
Microsoft® SQL Server® 2012 Express http://www.microsoft.com/en-us/download/details.aspx?id=29062
答案 2 :(得分:33)
对我来说,SSMS版本2016(13.0.16100.1)仍存在此问题。
一个不错的解决方法是不使用“右键单击” - > '添加表...'对话框,只需将要从对象资源管理器添加的表拖到图表面上即可。拖动鼠标图标会变为“添加”符号,并在释放鼠标时添加表格。
每次都要关闭SSMS。
答案 3 :(得分:14)
重新启动工作! 我发现在sql server 2016上添加新表到我的数据库图表时出现了同样的错误,重新启动了sql server management studio,终于解决了。
答案 4 :(得分:7)
如果您使用2008管理工作室工具连接到SQL 2012实例,则会出现此问题。
如果我使用SQL 2008在一台服务器上工作,并尝试快速查询运行SQL 2012的另一台服务器,我会遇到很多。
我通常将我的个人工作站放在最新版本的管理工作室(本例中为2012),并且能够从那里管理所有服务器。
答案 5 :(得分:6)
错误消息背后的原因是SQL无法在旧的SQL Server版本中显示新功能。
请将您的客户端SQL版本升级到与服务器Sql版本相同的
答案 6 :(得分:1)
您必须使用新版本的Management Studio。并且您将收到错误29506.因此您应该以管理员身份运行以进行设置。 看看这个网站。 http://shareis.com/post/29506-management-studio-express
答案 7 :(得分: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.1600.1。 将它们升级到10.53.6000.34修复它 - 从而允许2008R2 SMO用2012和2014服务器做很多事情。
从功能包中获取它们
https://www.microsoft.com/en-gb/download/details.aspx?id=44272
答案 8 :(得分:0)
兑现内容是一个非常老的问题。 MS计划从SSMS中删除图表,因此他们对此并不在意。无论如何,解决方案是存在的。
只需关闭Diagrams选项卡,然后再次将其打开。与SSMS 18.2兼容。
答案 9 :(得分:0)
现在已证明建议的原因几乎是不可能的。我在SS 2014上运行SSMS V17.9.2,仍然有问题。自2006年我开始使用SSMS以来,此工具一直存在内存问题。
是的,MS希望摆脱图表绘制,但用户不会这么做。我有一种感觉,他们永远不会解决这些问题,因为他们希望用户对工具感到厌倦,以至于他们中的大多数人放弃使用该工具,而他们可以完全放弃它。
如果您每天可以这样做很多次,那么重新启动仍然是一种解决方法。
答案 10 :(得分:0)
您必须在SSMS中使用最新版本
您可以通过此页面查看最新版本 https://sqlserverbuilds.blogspot.com/
答案 11 :(得分:-1)
我发现SQL-Server 2016中的Diagram和Schema存在问题,可能对该主题有用。 我正在编辑图表(与"销售"架构的许多表相关,并且添加了新表,但是忘了声明它的架构,所以它是默认" dbo"。然后当我回到并打开时,架构"销售"并试图添加一个现有的表... Bluf!这触发了该线程中描述的完全相同的错误。 我甚至尝试了解决方法(拖动表格),但它没有工作。突然我注意到架构不正确,我更新了它,再次尝试了,尤里卡!问题立即消失了......问候。
答案 12 :(得分:-1)
只是为了表明该错误在 SSMS 版本 18.9.2 中没有多大作用,从对象资源管理器中拖动要在图表中显示的表格 标签并等待它完成加载,然后再开始使用它。