主キー、インデックスが作成できません

このQ&Aのポイント
  • SQLserver2000とACCESSで使用しているテーブルに、主キーとインデックスを設定しようとしたところ、エラーが発生しました。
  • エンタープライズマネージャから主キーを設定しようとした際、重複したキーが見つかったため、インデックスの作成ができませんでした。
  • 主キーとインデックスを作成するためには、事前に重複したキーを解消する必要があります。
回答を見る
  • ベストアンサー

主キー、インデックスが作成できない

お世話になります。 SQLserver2000とACCESS(フロント)で使っております。 主キーもインデックスも設定していなかったテーブルに エンタープライズマネージャから主キーを設定しようとしたのですが、保存しようとすると以下のエラーが出てしまいます。 もともと更新クエリを作成したのですが、”更新可能なクエリであることが必要です。”とエラーが出てしまい、いろいろ調べるうちに主キーを設定していないから??と思い、設定しようとしたのですがうまくいきません。。宜しくお願いします。 ■エラー内容 テーブル 'テーブル名 (ユーザー名)' - インデックス 'インデックス名' を作成できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server]インデックス ID 1 で重複したキーが見つかったので、CREATE UNIQUE INDEX は終了しました。もっとも重要な主キーは 'XXXX-00XXXX-00-A1 ' です。 [Microsoft][ODBC SQL Server Driver][SQL Server]制約を作成できませんでした。以前のエラーを調べてください。 [Microsoft][ODBC SQL Server Driver][SQL Server]ステートメントは終了されました。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

まずは重複データを抽出するところからやってみては? select * into work_tbl from テーブル名 a where a.キー項目 in ( select b.キー項目 from テーブル名 group by b.キー項目 having count(*) > 1 ) でキー項目が重複してレコードを抽出してみてみてはどうですか。

tochou4848
質問者

お礼

回答が遅くなり失礼いたしました。 データが重複しておりました。 ご教示ありがとうございました。

関連するQ&A

  • SQLserver2000でプライマリーキーの設定でのエラー

    こんばんわ。 現在SQLの勉強をSQLserver2000でしているのですが、 SQL Enterprise Managerを使って、ある列に主キーを定義しようとして、鍵マークをつけて、保存しようとすると 以下のようなエラーがでて設定できません。 テーブル 'xxxxx' - インデックス 'PK_xxxxx' を作成できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server]インデックス ID 1 で重複したキーが見つかったので、CREATE UNIQUE INDEX は終了しました。もっとも重要な主キーは 'yyyyy ' です。 [Microsoft][ODBC SQL Server Driver][SQL Server]制約を作成できませんでした。以前のエラーを調べてください。 [Microsoft][ODBC SQL Server Driver][SQL Server]ステートメントは終了されました。 初心者なので、このエラーの意味するところが理解できません。 なにが間違っているのでしょうか。 よろしくお願いします。

  • SQLサーバーのテーブルに対してアクセスで更新クエリを行ないたい

    こんばんは。 ・vista ・アクセス2003 ・SQL Server 2005 です。 SQL ServerからテーブルをMDBへリンクしているのですが そのテーブルに対し、アクセス側で更新クエリを実行しようとすると 実行時エラー '3157': ODBC--リンク テーブル'テーブル名'での更新に失敗しました。 [Microsoft][ODBC SQL Server Driver]時間切れになりました。(#0) と言うエラーになり、更新クエリができません。 どうすればアクセスでSQLサーバーのテーブルに対して更新クエリを行えるのでしょうか? よろしくお願いします。

  • 主キーとインデックスの違いについて

    はじめまして。 SqlServerのテーブル作成をしていますが、 主キーとインデックスの違いがよく分かりません。 いつも主キーの設定は行っていますが、インデックスの設定も必要なのでしょうか。(パフォーマンスの向上の為?) 基本的な事ですみませんが ご教授お願いします。

  • ビューにインデックスを設定できませんか?

    SQL Server 2005 EXPRESS を使用しています。 トランザクションのテーブルにマスタを結合して表示するビューを作成しました。 実際に利用する時はトランザクションテーブルの主キーを検索に多用すると予想されるので、該当のフィールドにインデックスを設定したいのですが… Management Studio でインデックスを設定しようとするとエラーになります。 エラーメッセージは インデックス '' の作成に失敗しました。 (Microsoft.SqlServer.Express.Smo) ------------------------------ ADDITIONAL INFORMATION: Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo) ------------------------------ ビュー 'View' に インデックス を作成できません。ビューにはスキーマがバインドされていません。 (Microsoft SQL Server, Error: 1939) となっています。まさにメッセージのとおりだとは思うのですが 「ビューにスキーマをバインドする」方法がわかりません。 どなたかご教授いただければ助かります。 よろしくお願いいたします。

  • ACCESS2000の主キー重複について

    いつもお世話になっています。 早速ですが、お教えください テーブル名:AMaster フィールド名:B があります。 「B」は主キーになっていまして、ユーザーが任意に数字をいれることになります。 主キーになっていますので基本的には重複しないのですがユーザーの押し間違いなどによって重複してしまった場合 [Microsoft][ODBC Microsoft Access Driver] インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 といったエラーメッセージが出ます。これは出ても構わないのですがツールバーの「戻る」でしか今後の操作ができなくなってしまうので(ユーザーはPC超初心者)何らかの形でエラーメッセージとともに任意のページへ戻れるようにしたいと考えています。 つきましては、「B」フィールドにあるデータとこれから入力される数値が重複していたら・・・という記述をお教えいただきたいと思います。 ASPにて作成していますのでそれに対応した記述ですとありがたいです。 過去のログに似たようなものがありましたがこちらを参照してもボクにはわかりませんでした。 http://okweb.jp/kotaeru.php3?q=357614 ボクも何分初心者なのでわからないことだらけですがよろしくお願いします。

  • テーブル作成クエリで主キーを設定

    サブフォーム作成のため主キーを設定したいのですが、クエリでグループ化した顧客コードをテーブルとするクエリで主キーを顧客コードに設定したいのですが、クエリ実行で主キー設定方法を教えてください。

  • カラムの削除が出来ません

    Microsoft SQL2000を使用しているのですが あるテーブル(table_A)のカラム(column_A)を削除したいので 以下のようなクエリ及び、GUIでの削除を実行しました。 ----------------実行クエリ----------------------- ALTER TABLE dbo.table_A DROP COLUMN column_A GO ------------------------------------------------- ところがどちらの削除を方法を実行しても以下のようなエラーメッセージが返されます。 -----------------エラーメッセージ---------------- テーブル 'table_A' - テーブルを修正できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server] 行 2: 'column_A' の近くに無効な構文があります。 ------------------------------------------------- カラム名の変更などはできるのですが どうしても削除だけ出来ません。 なお、このカラムは主キーとしての設定や 他のテーブルへの外部キーとしての設定を行っていません。 型は[varchar] (20) COLLATE Japanese_BIN NULLです。 どなたか対処方法をご存知の方がおられましたら ご回答よろしくお願いします。 それでは失礼します

  • 主キーにインデックスは貼らないと駄目でしょうか?

    いつもお世話になっております。 テーブルを作成したときに主キーのインデックスは改めて 貼る必要があるのでしょうか? それとも自動的に インデックスを貼ってくれます?

  • Accessから主キーの無いOracleテーブルにVBAで主キー設定付のODBC接続するには

    Oracle7--------------- Access97 Workgroup Server Release 7.3.2.2.1 TABLE_A----------------ODBC接続(リンクテーブル)     項目1 項目2 項目3 項目4 項目1~項目4は 空白レコードがあり 主KEYが張れない ******************************************************************** 主キーの作成出来ないオラクルテーブルがあります。 Access97からODBC接続を作成する時は (1)マニュアルであれば   対象テーブルに主キーが無ければ 任意の10項目を仮の主キーとして設定出来ますが (2)VBA(自動?)で リンク張ると Dim tab01 As TableDef  Dim db01 As Database  Dim strTABname As String strTABname = TABLE名 Set db01 = CurrentDb Set tab01 = db01.CreateTableDef(UserName & "_" & strTABname, dbAttachSavePWD) tab01.SourceTableName = UserName & "." & strTABname tab01.CONNECT = "ODBC;DSN=****;UID=" & UserName & ";PWD=" & Password & ";ConnectString=con;" db01.TableDefs.Append tab01 主キー設定の無いODBC接続が出来て   データの更新などが出来なくなります。 VBAでも仮の主キー設定付きのODBC接続は  出来ないでしょうか?

  • 外部から取り込んだテーブルに主キーを設定するには

    外部から取り込んだテーブルに主キーを設定するには sql server 2000 のデータベースにsqlserver 2008 express editionをインストールしたPCで別のデータベースのテーブルをインポートウィザードにて取り込み、そのテーブルに主キーを設定しようと、新しいログイン名で-ログイン-セキュリティ-ユーザー-プロパティの画面でセキュリティ保護可能なリソースを選択し、オブジェクトの列の権限にて更新、選択、等許可に設定しても、テーブルの変更が(主キーの設定)ができません。 この変更は、もともと無理なことなのでしょうか。そうだとしたら他にテーブルの列設定を変更する方法はないのでしょうか どうかご教授お願いします。宜しくお願いします。 PC os XP pro (sql server 2008 express edition) サーバー WINDOWS 2000 server SQL server 2000