• ベストアンサー

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

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

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

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

SCHEMABINDINGオプションがあるようですね。以下が参考になるでしょうか。 http://msdn.microsoft.com/ja-jp/library/ms187956(SQL.90).aspx http://msdn.microsoft.com/ja-jp/library/ms173846(SQL.90).aspx

TM03hsai
質問者

お礼

アドバイス、ありがとうございます。使っている環境で試してみます。

その他の回答 (1)

  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

インデックス付きビューの作成 http://technet.microsoft.com/ja-jp/library/ms191432(SQL.90).aspx 上記の「必要条件」を参照してください。

TM03hsai
質問者

お礼

ポイントは回答をいただいた順番でつけさせていただきましたが、こちらのサイトも大変参考になりました。ありがとうございました。

関連するQ&A

  • ログインユーザーの追加について

     SQL Serverで、データベース"GRSdb"を作成しました。 Management Studioにてログインユーザーを追加しようと思い、新規ログインを作成しようとしましたが、下記のようなエラーメッセージが表示されました。  ログイン"uzuracch"の作成に失敗しました(MicroSoft.SqlServer.Smo) 追加情報  Transact-SQLステートメントまたはバッチの実行中に例外が発生しました。 (MicroSoft.SqlServer.ConnectionInfo)  ユーザーにはこの操作を実行する権限がありません(MicroSoft SQL Server,エラー:15247) .このエラーに対する対処が分かりません。よろしくお願いします。 開発環境は、Windows7,VB2010PRO,SQLServer2008R2Expressです。

  • テーブルにはったインデックスは、ビューに対しても効力があるのか

    環境:RedHat Linux AS3.0 / PostgresSQL 7.3.6 Publicスキーマにインデックス付きのテーブルを作成し、 複数のスキーマにビューを作成してそのテーブルをそのまま参照したいと思っています。 (スキーマの数が非常に多いので、実体をひとつにし、  ディスク容量を抑えるのが目的です。) 環境のイメージは以下の通りです。 ◆Publicスキーマにテーブル作成------- create table TEST_TABLE ( id int, data varchar ); ◆test_tableにインデックスを作成------- create unique index TEST_KEY on TEST_TABLE ( id ); ◆test_schemaスキーマを作成------- create schema TEST_SCHEMA; ◆test_schemaスキーマにビューを作成------- create view TEST_SCHEMA.TEST_VIEW as select id, data from TEST_TABLE ; このような環境にて「TEST_VIEW」にSELECTをかけた場合、 「TEST_KEY」は踏襲されるのでしょうか? ビューに対してインデックスは作成できないようなので、 テーブルに対してはられたインデックスはビューでも生きている のではないかと考えたのですが、 上記認識で合っているかどうか ご存知の方がいらっしゃいましたらご教授頂けると助かります。 宜しくお願い申し上げます。

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

    お世話になります。 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]ステートメントは終了されました。

  • SQLServer2005Expressでアタッチ出来ない

    いつも仕事に役立つ情報をありがとうございます。 表題の件ですが、PCの入れ替えに伴い 前PCのSQLServer2005Expressにて稼動していたDbを 移行しようとした際に、デタッチ/アタッチでやろうとしたんですが 下記エラーが発生してアタッチ出来ない事象が発生してしまいました。 同様のエラーを克服した経験をお持ちの方からのアドバイスを お願いします。 「エラーメッセージ」 ------------------------------ サーバー 'D869\SQLEXPRESS' のデータベースのアタッチに失敗しました。 (Microsoft.SqlServer.Express.Smo) Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo) データベース "Asprova" を更新できませんでした。データベースが読み取り専用です。 (Microsoft SQL Server、エラー: 3906) ------------------------------

  • データベースメールのプロファイルが削除できません。

    SQL Server 2005 Workgroup Edition で、データベースメールのプロファイルを削除しようとすると、エラーになってしまいます。 レポートは下記です。 ・------------------------------------------------------------・ - プロファイル 'プロファイル名' を削除します (エラー) メッセージ プロファイル 'DBmail' を削除できません。 ------------------------------ ADDITIONAL INFORMATION: MailProfile 'DBmail' の削除に失敗しました。 (Microsoft.SqlServer.Smo) ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=削除+MailProfile&LinkId=20476 をクリック ------------------------------ Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.ConnectionInfo) ------------------------------ @force_delete はプロシージャ sysmail_delete_profile_sp のパラメータではありません。 (Microsoft SQL Server、エラー: 8145) ヘルプを表示するには http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1406&EvtSrc=MSSQLServer&EvtID=8145&LinkId=20476 をクリック ・------------------------------------------------------------・ エラー番号から検索しても解決方法がわかりませんでした。 どなたかご教授お願いいたします。

  • 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]ステートメントは終了されました。 初心者なので、このエラーの意味するところが理解できません。 なにが間違っているのでしょうか。 よろしくお願いします。

  • Viewにインデックスは張れますか?

    件名の通りなのですが、作成したViewが遅くて困っています。 改善方法としてはViewを作成しないで従来のSQLにインデックスを張って取得する方法にしようかなと考えています。 なにかいい方法はありますか?

  • SQLServer2008 ユーザー名の修飾無しでテーブル参照したい

    SQLServer2000で動作していたプログラムをSQLServer2008で動かそうとしています。 プログラムはDBのテーブルにアクセスする際にユーザー名(スキーマ)の修飾無しの SQLをDBに送っているためエラーになってしまいます。 SQLServer側の設定でスキーマと同じユーザーでログインしている場合は スキーマ修飾なしテーブルにアクセスする方法は無いでしょうか? 質問番号:4681290も参考にしたのですがログインユーザのサーバーロールはpublicのみが割り当てられています。 環境は専用レンタルサーバーでWindows Web Server 2008 + Microsoft SQL Server 2008です。 アドバイスいただければ幸いです。 よろしくお願いいたします。

  • SQLサーバー認証でログインを作成できません。

    はじめまして、宜しくお願いします。 SQL Server2005で新規にログインを作成しようと思います。 1.Microsoft SQL Server Management Studio Expressを起動 2.「セキュリティ」の「ログイン」を右クリックで「新しいログイン」をクリックし、ログイン新規作成画面を起動 3.任意のログイン名をいれ、SQL Server認証を選択し、パスワードを設定、既存のデータベースを選択。 4.この状態でOKをクリックすると以下のメッセージが出てエラーとなってしまう。 =================================== ログイン 'xxxx' の作成に失敗しました。 Transact-SQL ステートメントまたはバッチの実行中に例外が発生しました。 (Microsoft.SqlServer.Express.ConnectionInfo) このバージョンの Microsoft Windows では、MUST_CHANGE オプションはサポートされません。 (.Net SqlClient Data Provider) =================================== 何か原因に心当たりのある方がいらっしゃいましたらお願い致します。

  • SQLServer(2005)でビューの作成がうまくいきません。

    SQLServer(2005)でビューの作成がうまくいきません。 インデックス を作成できません。ビューでは別のビュー 'View1' が参照されています。インデックス付きビューの定義で参照されるビューの定義を手作業で拡張することを検討してください。 というエラーが出ます。(参照しているビュー’View1’にもインデックスが設定されています) このエラーの回避策をご存知であれば、教えていただきたいと思います。 よろしくお願いいたします。