web-dev-qa-db-ja.com

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

私はSQL Server 2008 R2を使っています。それはうまくいっています。しかし最近、私は私のホスティングサーバーを変更しました、そして、彼らがServerにSQL Server 2012をインストールしたことを知るようになりました。

さて、問題は、SQL Server 2008 R2を通してServer Databaseに接続した後、任意のテーブル名またはストアドプロシージャをクリックすると、エラーが発生することです。Index was outside the bounds of the array. (Microsoft.SqlServer.smo)

それで、私の側から何か問題があるのでしょうか、それともサーバー側からですか?そして、どうすればこの問題を回避できますか?

74
Jeeten Parmar

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

またはSqlServer Management Studioのサービスパックをダウンロードしてアップデートすると解決する可能性があります

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

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

43

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

74
Abisoye Falabi

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

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

毎回SSMSを閉じる必要があります。

33
MeanGreen

再起動しました!私はSQL Serverの2016年に私のデータベースダイアグラムに新しいテーブルを追加するために同じエラーを見つけ、SQL Serverの管理スタジオを再起動し、ついに解決しました。

14
mernig

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

SQL 2008を使用している1つのサーバーで作業していて、SQL 2012を実行している別のサーバーにすばやくクエリを実行しようとしている場合、私はこれをよく経験します。

私は通常、パーソナルワークステーションを最新バージョンのManagement Studio(この場合は2012)上に置き、そこからすべてのサーバーを管理することができます。

7
Justin Manning

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

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

6

新しいバージョンのManagement Studioを使用する必要があります。また、あなたはエラー29506を得るでしょう。あなたはセットアップのために管理者として走るべきです。このサイトを見てください。 http://shareis.com/post/29506-management-studio-express

1
Çetin DOĞU

スタックトレースで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
GilesDMiddleton

キャッシュされたコンテンツには非常に古い問題があります。 MSは、SSMSから図を削除することを計画しているため、彼らはこれを気にしません。とにかく、解決策が存在します。

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

0
Tomas Vileikis

SQL-Server 2016のDiagram and Schemaに問題があることが判明しました。ダイアグラムを編集していて( "sales"スキーマに関連し、多くのテーブルを含む)、newテーブルを追加しましたが、スキーマの宣言を忘れていたので、デフォルトの "dbo"を使用しました。 。その後、スキーマ "sales"に戻って開いたときに、既存のテーブルを追加しようとしましたが... Bluf!そのスレッドで説明されているのとまったく同じエラーが発生しました。私は(テーブルをドラッグして)回避策を試みたが、うまくいきませんでした。突然、スキーマが正しくないことに気付いたので、更新してもう一度試したところ、Eureka!問題はすぐに解決しました...よろしく。