インデックスが配列の範囲外だった。(Microsoft.SqlServer.smo)


91

使用してい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 14

続行できますが、新しい機能は利用できません。
Samith C Valsalan 2015年

1
私たちのケースでは、SQL 2016で2008 R2データベースを復元しましたが、同じ方法でダイアグラムを使用しようとしていました。管理者としてSSMS 2016 13.0.15900.1を実行した後、問題を解決しました。ゴーゴー!
Marc Roussel

回答:


51

SqlServer管理スタジオを2008年から2012年にアップグレードする

または、SqlServer Management Studioのサービスパックをダウンロードして、おそらく解決策を解決してください

以下のリンクからSQL Server Management Studio 2012をダウンロードできます。

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


これに対する修正はまだありません。2018年を含む管理スタジオのすべてのバージョンでこのエラーが発生しました-このバグが何年も前から存在していたのは残念です。
MeTitus

98

Management Studioを再起動するとうまくいきました。


5
「範囲外」エラーは、スタジオがデータベース構造をキャッシュしているために発生したようです。構造に十分な変更を加えると、キャッシュされたバージョンとの一致が不十分になり、エラーの生成が始まります。再起動すると、キャッシュが再構築されます。
デビッドオースティン

それが本当の問題でした。答えを更新する時間がありませんでした。更新するとバグが修正されます
Abisoye Falabi 2018年

41

私にとって、この問題はSSMSバージョン2016(13.0.16100.1)でもまだ存在します。

適切な回避策は、「右クリック」->「テーブルの追加...」ダイアログを使用せずに、追加するテーブルをオブジェクトエクスプローラーからダイアグラムサーフェスにドラッグすることです。マウスをドラッグしている間、アイコンは「追加」記号に変わり、マウスを離すとテーブルが追加されます。

毎回SSMSを閉じる必要があることを克服します。


図はv18.0プレビュー4で使用できなくなりました。うまくいけば、すぐに戻ってくるでしょう!
MeanGreen '19年

21

再起動しました!SQL Server 2016のデータベースダイアグラムに新しいテーブルを追加するのと同じエラーが見つかり、SQL Server Management Studioを再起動し、ようやく解決しました。


はい。SQL Server 2016 Management Studio(v 13.0.16106.4)でこのエラーが発生しました。アプリ/ UIを再起動するだけで済みました。サーバーを切断して再接続するだけでは機能しませんでした。
joedotnot

7

これは、2008 Management Studioツールを使用してSQL 2012インスタンスに接続している場合の問題です。

SQL 2008を搭載した1台のサーバーで作業していて、SQL 2012を実行している別のサーバーにすばやくクエリを実行しようとすると、この問題が頻繁に発生します。

私は通常、個人用ワークステーションを最新バージョンの管理スタジオ(この場合は2012)に保持しており、そこからすべてのサーバーを管理できます。


6

エラーメッセージの背後にある理由は、SQLが古いSQLサーバーバージョンの新機能を表示できなかったことです。

クライアントSQLバージョンをサーバーSQLバージョンと同じバージョンにアップグレードしてください


2

提案された原因は現在ほとんど不可能であることが証明されています。SS 2014に対してSSMS V17.9.2を実行していますが、まだ問題があります。SSMSの使用を開始した2006年以降、このツールにはメモリの問題が存在しています。

はい、MSはダイアグラム作成を取り除きたいと思っていますが、ユーザーはそれを許可しません。ユーザーがこのツールにうんざりしていて、十分に使用をやめて完全に放棄できるようにしてほしいので、これらの問題は決して修正しないだろうと思います。

再起動は、1日に何度も実行することに耐えられる場合は、依然として回避策です。



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


1
SQL Server 2008 R2 Service Pack 3のこのリンクは、どのインストーラーをダウンロードするかという点でより明確であることがわかりましたsupport.microsoft.com/en-us/kb/2979597
Justin

0

SQL-Server 2016のダイアグラムとスキーマに問題があることがわかりました。私は(「sales」スキーマに関連し、多くのテーブルが含まれている)図を編集していて、新しいテーブルを追加しましたが、スキーマを宣言するのを忘れたため、デフォルトの「dbo」を使用していました。次に、スキーマに「営業」して戻って、既存のテーブルを追加しようとすると... Bluf!そのスレッドで説明されているのとまったく同じエラーをトリガーしました。回避策(テーブルをドラッグ)も試しましたが、うまくいきませんでした。突然、スキーマが正しくないことに気づき、それを更新し、再試行し、そしてEureka!問題はすぐに消えた...よろしく。



0

キャッシュされたコンテンツに関する非常に古い問題です。MSはSSMSから図を削除する予定なので、これについては気にしません。とにかく、解決策は存在します。

「ダイアグラム」タブを閉じて、もう一度開きます。SSMS 18.2。で動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.