SQL Serverでエラーコード1060を解くにはどうすればよいですか? (ステップバイステップ)

公開: 2025-08-07

SQL Serverで作業していて、次のようなエラーが表示されている場合は、
「エラー1060:列名の重複」パニックに陥らないでください。それは深刻に見えますが、それはよくある間違いです。

これは通常、新しい列を追加してテーブルを変更しようとしているときに表示されますが、列名はすでに存在します。たぶんあなたはそれがそこにあることに気づかなかったでしょう。おそらく、スクリプトは2回実行されました。いずれにせよ、SQL Serverは、「ねえ、このコラムはすでに存在しているので、もう一度追加できません。」

簡単に解散して、迅速に修正して後で回避できるようにしましょう。

SQL Serverエラーコード1060はどういう意味ですか?

SQL Serverエラーコード1060はどうなりますか

エラー1060は、SQL Serverが既にテーブルにある名前の列を追加するのをブロックしていることを意味します。

「複製列名」エラーと呼ばれます。テーブルにはすでにuser_emailという名前の列があるとしましょう。 ALTER TABLEを使用して同じ名前の別の列を追加しようとすると、SQL Serverはエラー1060をスローして複製を停止します。

それはバグではありません。これは、データベース構造を保護するSQLの方法です。

SQL Serverにエラーコード1060が表示される一般的な理由

このエラーは通常、テーブルのデザインまたは実行中のスクリプトに取り組んでいるときに表示されます。 SQL Server Management Studio(SSMS)またはスクリプトファイルでそれを行っているかどうかは関係ありません。コマンドの書き込み方法に関するものです。

エラー1060が表示される日常の状況は次のとおりです。

  • すでに存在する列を追加しようとします
  • 列をチェックせずに同じスクリプトを2回実行します
  • 複製フィールドを追加する別の開発者からスクリプトをコピーします
  • データベースを復元し、その競合を更新していることを実行しています
  • 同じスキーマを複数回適用する自動化ツールを使用しています
  • 大きなテーブルを編集し、列名の追跡を失う
  • 古いアプリを移行して、新しい列を同期しようとしています

特に共有プロジェクトや大幅なスキーマの変更について、簡単に遭遇することができます。

SQL Serverエラーコード1060を修正する方法は?

このエラーは最初は怖く見えますが、通常は簡単に修正できます。すでにテーブルに存在する列を追加しようとしています。したがって、重要なのは、複製を避けるか、安全に処理することです。

これらの修正を1つずつ試してください。ほとんどの場合、#1を修正、または修正#2はすぐに解決します。

修正#1:列が既に存在するかどうかを確認します

新しい列を追加しようとする前に、最初にテーブルをチェックして、その列がすでに存在しているかどうかを確認します。

このSQLクエリを使用できます。

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'your_table_name'

これにより、テーブル内のすべての列が表示されます。追加しようとしている列がすでにリストされている場合、それがあなたの問題です。もう一度追加する必要はありません。スクリプトからその部分を削除します。これが最も安全な最初のステップです。

修正#2:変更ステートメントにIF NOT EXISTS使用してください

SQL Serverは、 ALTER TABLEに直接ロジックにIF NOT EXISTS正確に存在しませんが、このようなIFブロック内でAlterコマンドをラップすることができます。

IF NOT EXISTS (
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'your_table_name'
AND COLUMN_NAME = 'your_column_name'
)
BEGIN
ALTER TABLE your_table_name
ADD your_column_name VARCHAR(255)
END

これは最初にチェックします。列がそこにない場合、追加します。すでにそこにある場合、コマンドをスキップして、エラーはありません。これは、複数回実行する可能性のあるほとんどのスクリプトにとって最良の修正です。

修正#3:SQLスクリプトを確認してクリーンアップします

問題がコードにない場合があります。そのコードが実行される回数です。長いSQLスクリプトまたは移行ファイルを使用している場合は、 ALTER TABLEコマンドを繰り返し確認してください。たぶん、同じ列が偶然に複数回追加されています。

また、別のソースからスクリプトの一部をコピーした場合、同じテーブルの重複コマンドが含まれていないことを再確認します。このクリーンアップステップは、複数の変更を管理する場合に特に役立ちます。

修正#4:重複列の名前を変更またはドロップする(必要に応じて)

列が既に存在しているが、不要になっていないか、間違った名前がある場合は、新しい名前を追加する前にドロップするか、名前を変更することをお勧めします。

列をドロップするには:

ALTER TABLE your_table_name
DROP COLUMN your_column_name

列の名前を変更するには(SQL Server 2016+):

EXEC sp_rename 'your_table_name.old_column_name', 'new_column_name', 'COLUMN'

警告:列が他の場所で使用されている場合、列をドロップまたは名前変更すると、アプリを壊す可能性があります。列が安全に削除または変更できることを確認している場合にのみ、これを使用してください。

修正#5:SQL Server Management Studio(SSMS)を使用してスキーマを確認する

時には、視覚的に物事を見るのに役立ちます。 SSMを開き、データベースに接続し、テーブルを展開します。リストされているすべての列名が表示されます。これにより、列が既にそこにあるか、別のスペルで追加された場合に見つけやすくなります。

確認されたら、スクリプトに戻って、その列を安全に編集またはスキップできます。 SSMSは、特に不明な場合は、変更を加える前にダブルチェックするのに最適です。

SQL Serverエラーコード1060を回避するためのベストプラクティス

このエラーは標準ですが、それを処理する方法を知ったら、回避するのも簡単です。将来、あなたを再び打つことを救うことができるいくつかのヒントを以下に示します:

  • 追加する前に列が既に存在するかどうかを常に確認してください
  • スクリプトにロジックIF NOT EXISTS (サポートされている場合)使用します
  • 明確で一貫した列の命名に固執します
  • 必要な場合を除き、同じ変更テーブルを複数回実行しないでください
  • 変更ログまたはバージョン制御にスキーマ変更の記録を保持します
  • ライブになる前にステージングデータベースで新しいスクリプトをテストする
  • SSMSなどのツールを使用して、テーブル列を視覚的に確認します
  • それが何をするかを知らずに、SQLをコピーすることは避けてください

これらの小さな習慣は、クリーンスクリプトを作成し、エラー1060などの問題を回避するのに役立ちます。

結論

SQL Serverエラー1060は混乱を招く可能性がありますが、単に既に存在する列を追加しようとしたことを意味します。 SQLは、テーブル構造を保護するために仕事をしているだけです。

通常、修正は簡単です。列リストを確認したり、スクリプトを調整したり、条件を追加して重複を防ぎます。何が原因であるかを理解したら、将来避けるのは簡単です。

この種のエラーは、SQL作業で典型的です。スクリプトを練習してテストすればするほど、簡単に取得できます。