0

Visual Studio (Entity Framework、「モデルからデータベースを生成...」リンク) によって生成されたスクリプトを実行してデータベースを作成しようとすると、主キーでエラーが発生します。

私に問題を与えるコマンドは

ALTER TABLE tablename
ADD CONSTRAINT constraintname
    PRIMARY KEY NONCLUSTERED (col1, col2 ASC);

私が得ているエラーは

索引 constraintname は作成されませんでした。インデックスのキーの長さは 1024 バイトです。許容されるキーの最大長は 900 バイトです。

テーブルはで作成されます

CREATE TABLE tablename (
    col1 nchar(256)  NOT NULL,
    col2 nchar(256)  NOT NULL
);

これは 1024 バイトではなく 512 バイトに見えます。

SQL Server が 1024 とカウントする原因と、この問題を解決するにはどうすればよいですか?

4

3 に答える 3

3

ncharUnicode で、1 文字あたり 2 バイトを使用します。

Unicode が必要ない場合は、に切り替えてcharください。または、列を短くするか、別の列を追加してキーとして使用します。2 つの 512 文字の文字列は、かなり大きな主キーです。

于 2013-07-10T20:15:50.823 に答える
2

に切り替えますnvarcharnchar固定空間データ型です。おそらくストレージ容量の 90% を無駄にするでしょう。10 文字の文字列を保存する場合は、不要な無駄である 256 のスペースが必要になります。

varcharさらに 50% のスペースを確保することを検討してください。しかし、その方法では Unicode が失われます。

次の todo: ドキュメントを読んで、データ型に慣れてください。トリッキーな間違いがあります。

于 2013-07-10T20:38:40.760 に答える