0

クラスター化されたインデックスが必要な Azure のデータベースがあります。新しい非同期機能を使用したいので、Entity-Framework 6 Alpha 2 を使用したいと考えています。SQL Express 2012 を使用してローカル マシンでテストすると、すべて問題ありませんが、Azure データベースで試してみると、次のエラーが発生します。

このバージョンの SQL Server では、クラスター化インデックスのないテーブルはサポートされていません。クラスター化インデックスを作成して、もう一度やり直してください。

空のデータベースでテストすると、すべての主キーがクラスター化されたインデックスになるため、どうすればよいかわかりません。

何か案は?

4

1 に答える 1

0

「Windows Azure 上の既存のデータベース」と EF 6 を使用する状況について、少し説明を追加していただけますか? まず第一に、EF CodeFirst、ModelFirst、DatabaseFirst を使用していますか? では、実際に既存のデータベースがある場合、どのように作成したのでしょうか? いくつかのウィザード (SSMS、SQL Azure Migration Wizard、EF CodeFirst で作成されたものなど) を使用して、手動で DB + スキーマを作成します。この既存の DB が Azure に存在しなくなったのはなぜですか?

次に、完全なエラー メッセージを追跡し、エラーが発生したテーブルを確認して、そのテーブルにクラスター化インデックスを手動で追加します。SQL Server で作成するすべての主キーは、既定では CLUSTERED でもあります。ただし、テーブルが最初に作成された場合、主キーは別の DDL ステートメント (ALTER TABLE ....) として追加され、CLUSTERED として作成されていない可能性があります。

したがって、メッセージは非常に明確です。最初にクラスター化インデックスを作成してください。SQL Azure が不平を言っているテーブルを見つけて、そのテーブルにクラスター化インデックスを作成します。主キーがない場合は、CLUSTERD として追加するだけです。

ALTER TABLE [dbo].[Individual]
ADD CONSTRAINT [PK_Individual_CustomerID]
PRIMARY KEY CLUSTERED
(
[CustomerID] ASC
)

主キーがある場合 - 含まれている列を確認して削除し、クラスターとして再作成します。

于 2012-12-14T11:06:36.517 に答える