[解決済み] 存在しない重複があるため、インデックスを作成できない?
質問
以下のTransact-SQLコマンドを実行すると、エラーが発生します。
CREATE UNIQUE NONCLUSTERED INDEX IX_TopicShortName
ON DimMeasureTopic(TopicShortName)
というエラーが発生します。
Msg 1505, Level 16, State 1, Line 1 CREATE UNIQUE INDEX ステートメントを実行しました。 は、重複するキーがあったため終了しました。 オブジェクト名 dbo.DimMeasureTopic'とインデックス は 'IX_TopicShortName' という名前です。その 重複するキーの値は()です。
を実行すると
SELECT * FROM sys.indexes WHERE name = 'IX_TopicShortName'
または
SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[DimMeasureTopic]')
の場合、IX_TopicShortNameのインデックスは表示されません。つまり、重複はしていないようです。
別のデータベースにも同じスキーマがあり、そちらでは問題なくインデックスを作成することができます。なぜここで作成できないのか、何か思い当たることはありますか?
解決方法を教えてください。
インデックスがすでに存在するのではなく、そのインデックスに含まれる
TopicShortName
フィールドがあります。 エラーメッセージによると、重複している値は空文字列です(単に投稿のファセットかもしれませんね)。 このような重複があると
UNIQUE
インデックスを作成します。
クエリを実行して、重複していることを確認することができます。
SELECT
TopicShortName,
COUNT(*)
FROM
DimMeasureTopic
GROUP BY
TopicShortName
HAVING
COUNT(*) > 1
おそらく、もう一方のデータベースではデータが異なっており、重複は存在しないものと思われます。
関連
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] SQL Server 2005でアップサート(更新または挿入)する方法
-
[解決済み] 最初の行への結合方法
-
[解決済み] NULLも許容するユニークな制約を作成するにはどうしたらいいですか?
-
[解決済み] Sqlサーバーの文字列がNULLまたは空であるかどうかを確認する方法
-
[解決済み】SQL Serverスキーマは何の役に立つのか?
-
[解決済み】SQLの「ゼロによる除算」エラーを回避する方法とは?
-
[解決済み] テーブルを変更し、複数の列を追加する ms sql
-
[解決済み] SQL Server Brokerを有効にするのに時間がかかりすぎる
-
[解決済み] SQL Server 2005 T-SQL での Base64 エンコーディング
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] nvarchar 型から datetime 型へのデータ型変換エラー
-
[解決済み] 存在しない重複があるため、インデックスを作成できない?
-
[解決済み] SQL Server 2005でアップサート(更新または挿入)する方法
-
[解決済み] Sqlサーバーの文字列がNULLまたは空であるかどうかを確認する方法
-
[解決済み】SQL Serverスキーマは何の役に立つのか?
-
[解決済み] テーブルを変更し、複数の列を追加する ms sql
-
[解決済み] SQL Server Brokerを有効にするのに時間がかかりすぎる
-
[解決済み] SQL Server 2005 T-SQL での Base64 エンコーディング