2

複数のクライアント (ローカル インストール) によって使用されるデータベースがあります。計画では、データを Azure にコピーして、グローバル レポートなどを許可する予定です。

データベースは主キーに GUID を使用します。

テーブルのクラスター化されたインデックスには何を使用する必要がありますか? Azure にデータを追加する場合、それは問題ではありませんか? クラスター化インデックスは本当に必要ですか? Azure には、データベースの単一のコピーがあり、それが違いを生む場合は、その中にすべてのクライアント データが含まれます。

皆さんありがとう。

4

2 に答える 2

1

SQL Serverでクラスター化インデックスのないテーブルを作成(およびデータを保持)することは許可されていますが、Windows Azure SQLデータベース(WASD / SQL Azure)では許可されていません。WASDのクラスター化インデックスのないテーブルを定義として使用することはできますが、そのようなテーブルに対してDMLステートメントを実行することはできません。つまり、クラスター化インデックスのないWASDのテーブルに対してINSTERT / UPDATE/DELETEステートメントを実行することはできません。したがって、万が一データがクラウドに送られる場合は、クラスター化されたインデックスが必要です。詳細については、ギルドラインのクラスター化インデックスの要件とWindowsAzureSQLデータベースの制限を確認してください。

于 2012-09-19T09:02:42.400 に答える
1

ここでの推奨事項の一部は正しくありません。

  1. NEWSEQUENTIALID() は、SQL Azure では使用できません。
  2. SQL Azure では、クラスター化されたインデックスが絶対に必要です。テーブルがなくてもテーブルを作成できますが、クラスター化インデックスを追加するまでデータを追加することはできません。

Azure では、バックエンド レプリケーションにクラスター化インデックスが使用されます。参照: http://blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx

あなたの最善の策は、クラスター化インデックスとして Identity 要素を持つ列を使用し、guid 列に非クラスター化インデックスを使用することだと思います。私はこれとまったく同じ問題に遭遇し、かなりの調査の後、最終的に思いついた解決策です. 特に Azure で既にデータを運用している場合は、まとめるのが少し面倒ですが、すべての問題に対処できるようです。

NEWSEQUENTIALID を使用するのが最も簡単だと思いますが、それは Azure のオプションではありません。

于 2012-10-05T02:29:48.637 に答える