スキーマ名が邪魔

このQ&Aのポイント
  • 現在Accessで稼動しているDBをAccess+SQLServer2008 R2 EXPRESSに移行しようとしています。しかし、リンクテーブルするとテーブル名の前にdbo.が付き、変更するには100以上のテーブルを変更する必要があります。SQLサーバーでテーブル名からdbo.をはずす方法はあるのでしょうか?
  • Accessで稼動しているDBをSQLServer2008 R2 EXPRESSに移行しようとしていますが、リンクテーブルするとテーブル名にdbo.が付いてしまいます。テーブルの数が100を超えるため、Accessからリンクをする際に既にdbo.がない状態にしたいです。SQLサーバーでdbo.をはずす方法はありますか?
  • Accessで使用しているDBをSQLServer2008 R2 EXPRESSに移行しようとしています。しかし、リンクテーブルするとテーブル名の前にdbo.が付いてしまいます。テーブルの数が100以上あるため、Accessからリンクをする際にはdbo.のない状態でリンクしたいです。SQLサーバーでdbo.をはずす方法はあるでしょうか?
回答を見る
  • ベストアンサー

スキーマー名が邪魔

現在Access(DB用mdbと,そのmdbにリンクテーブルしているクライアント用mdb)で稼動しているDBをAccess+SQLServer2008 R2 EXPRESSという環境に移行しようとしています。 以下の質問を参考に http://okwave.jp/qa/q4935022.html?rel=innerHtml&p=bottom&l=1 SSMSを使ってAccessからのテーブルデータの移行を行いました。 そうしたところ スキーマ(?)として必ずdbo.テーブル名となってしまい、Accessからリンクテーブルするとdbo_テーブル名とデフォルト名がなってしまいました。 Accessのテーブルの名前の変更でリンクテーブルしたものからdbo_を取ることで解消すると言うことはわかっていますが、テーブルの数が100を超えるのでできればAccessからリンクをしに行った時点でdbo無しの状態にしたいと思っています。 SQLサーバーでテーブル名からdbo.と言うのをはずす方法はないのでしょうか? インポートの設定(マッピングのあたり)から無理やりはずしたりもしてみましたが勝手にdbo付属してしまいました。 よろしくお願いいたします。

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 え? MDB+MDBからADP+SQL Serverに移行という話じゃなくってですか?  ま・・・・いいや。それは無理でしょうね。AccessのODBCテーブルリンクの仕様でしょう。ODBCテーブルリンクはいくつものリンク先に接続できるため、名前がかぶる可能性があるからだと考えられますが、確かに煩わしいですね。本当にかぶったときは自動で連番になるんだからどうでも良さそうなものなのに。  ・・・・ところで、せっかくバックエンドをMS SQL Serverに移行した訳なので、MDB+ODBCテーブルリンクではなく、ADPを使ってみてはいかがでしょうか。ADP(Access Database Project)というのは、テーブルとクエリー(SQL Serverでは「ビュー」)の2つをSQL Serverが担い、フォーム、レポート、マクロなどはAccessが担当するというもので、MDBのテーブルであるかのようにSQL Serverのテーブルを操作できるのと多数のADPでSQL Serverを共有できるのが特徴です。もちろん若干MDBとは使い勝手が違いますが、データをすでにSQL Serverに移したという事なのでADPは十分検討の対象になると思います。  ほとんど回答になっていませんが、それでは。

mentaiko2
質問者

補足

説明不足というか後出しになってしまって、申し訳ありませんが、現在のクライアント用MDBにもそれぞれのクライアント専用のテーブル、クエリーを持っているのでADP(Accessプロジェクト)にするのは工数の面から考えても無いかなあと思っています。 (少なくとも今回は無しの方向です、今後ADP化して整理していくことも選択肢の一つだとは思っています。) 何でスキーマ名が取れないかなあ?と思ったかと言いますと、以前別の案件でMSDEからSQLServer2008にあげたことがあり、そのときはdboのようなものはついてないので、SQLの機能としてはずす(省略する)ようなものがあるんでは無いかと思い投稿いたしました。 上記の件も、今回も元々のシステムに私自身がまったくかかわっておらず、当時の担当者、資料等も何も無いという中やっていますので今回と前回でどこがちがのか良くわかっておらずわかりにくい質問になってしまい申し訳ありません。

関連するQ&A

  • SQLでスキーマ名(所有者名)の修飾無しでテーブル参照したい

    select * from [テーブル名] で問い合わせをしたいんですが、 select * from [スキーマ名].[テーブル名] でなければエラーになってしまいます。 (「オブジェクト名 'テーブル名' は無効です。」といった、テーブルが無い旨のエラーが出ます。) 所有者(スキーマ名?)をdboに変更してするとテーブル名だけで参照できます。 例えば、テーブルの所有者を'test_user'に変更した場合、 test_userでログインしているにもかかわらず(クエリアナライザ)、修飾が無いと参照できません。 'test_user'はsystem administratorsロールに入れてあります。 SQLServerをインストールし直して DBを一から構築してもそうなります。 何か施さないといけないことがあるのでしょうか。 思い当たることがございましたら、ご教示頂ければと思います。 環境は SQL Server 2000 です。

  • アクセスを2名で共有する場合もに移行した方がよい?

    2名で共有する場合もSQLServerに移行した方がよいでしょうか? ひとつのMDBテーブルをテーブルとその他に分けて使用しています。 テーブル部分を共有フォルダに入れて使っていますが 現在は一人が使ってる時はもう一人は使わないようにしています。 今のタイミングならSQLServerに移行できる時間があるのですが2名でも移行した方が良いですか? アクセスは複数でファイルの共有をすると壊れやすいと聞いたのですが2名でもそうでしょうか? 今後は2名が同時にテーブルの更新などを行う予定なのですが その場合はやはりSQLServerに移行した方が良いでしょうか? アクセスのままでもイケますか?

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

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

  • SQLserver2008でのSQL発行時ののオブジェクトエラーについ

    SQLserver2008でのSQL発行時ののオブジェクトエラーについて 「sa」ユーザーでDB作成後テーブルも複数作成。そのあとにこのSQLを「SELECT * FROM (テーブル名)」で発行すると、赤線が出てきてオブジェクト(テーブル名)が無効です。」とのエラーメッセージが出てきます。けれども結果は正しく表示されます。 何がいけないのでしょうか? 「DB名」.「dbo」.「テーブル名」でも同じです・・・ スキーマ関係があまり詳しくないので是非教えてください。

  • AccessとSqlServerのテーブルリンク

    Access2007とSqlServer2008を使用しています。 Accessで作成したテーブルを「データベースツール」-「データの移動」でSqlServerに移行してリンクする際、 (1)SqlServerに新規にデータベースを作成すると、リンクテーブルマネージャから見てもリンク先DBが正しく表示されますが、 (2)その後、その既存DBに同じAccess内の別のテーブルを、「データベースツール」-「データの移動」してリンクしたものは、リンクテーブルマネージャから見てもリンク先DBが ()となっており表示されていません。 ツールとしてSqlServer Management Studioを使っていますが、そこからでも(1)のテーブルは表示されていますが、(2)のテーブルは表示されません。 でもリンクはできているようなのです。 また、SqlServer Management Studioを使って、SqlServer内に新規テーブルを作成し、 それをAccessからリンクしようとしても、テーブルリンク一覧内に表示されない状態です。 (「外部データ」-「ODBCデータベース」…)にて SqlServerのファイルデータソースを表示しています) (2)のテーブルはSqlServer Management Studioから見ることができないため、更新・削除もできず困っています。 DB、テーブル、リンク方法等、何か問題があるのでしょうか? よろしくお願いします。

  • SQLサーバーのテーブルの値が更新できません

    お尋ねします。 SQLサーバー2005にDB1というデータベースにdbo_TB1というテーブルがあります。そのテーブルの特定の列の値を更新したいので、AC.mdbというアクセスのファイルにテーブルのリンクをし、更新したいファイルを用意して、アクセスのクエリでデータを更新しようとしましたところ、更新ができませんでした。  dbo_TB1を更新可能にするためには、どのようにして権限を与えればいいでしょうか。  SQLサーバー2005の知識を習得しようと学習を始めたばかりで、よく理解できていません。よろしくお願いします。

  • access2000からPostgresSQLのテーブルリンク

    access2000からPostgresSQLのテーブルリンクで publicスキーマのみだけしかテーブルの一覧が出てきません。 データ移行などに便利なのでaccessを使いたいのですが他のスキーマをリンクさせる方法はないものでしょうか? 宜しくお願いいたします。

  • データ移行

    システムの再構築でmdb(Access2000)からSQLServer2005とSQLServer2000からSQLServer2005へのデータ移行があります。 データ移行と言いましても、テーブルの構成が変わるため必要な項目と不必要な項目があります。今、考えているのが、一度SQLServer2005へmdbまたは、SQLServer2000と同じテーブルを作成(一時的なテーブル)し、その後、INSERT文で新規テーブルに必要な項目を追加していきたいと思っています。 一時的なワークテーブルを作成する際にmdbからとSQLServer2000からとでい色々な方法があると思うのですが、どの様な方法があり、その方法のメリット・デメリットを知りたいのですが、教えて頂けないでしょうか?よろしくお願いします。

  • アクセスからSQL Serverのデーターを更新することができない。

    アクセスのデーターをSQLサーバーへ移行する計画があり、準備のため SQL Developer バージョンで独習中です。SQLサーバーにコピーしたテーブルにアクセスからログインするとテーブルは見られるのですが、データーの変更については「このレコードセットは更新できません」と表示されます。権限の問題ではないかと思われます。 環境と現状の設定: XP Professional SQL Server 2008 Developer Visual Studio 2008  サーバー名: SVR-1 セキュリティー ログイン名: SVR-1\taro サーバーロールのメンバーシップ:sysadmin データーベース名: project ユーザー名: dbo ログイン名: SVR-1\taro 既定のスキーマ: dbo 所有されているスキーマ:なし データーベースのロールメンバーシップ: db_owner 不思議なことに、Visual Studio 2008を使って試作したデーターベースはアクセスから書き換えができます。セキュリティーの設定も何ら変わりがないのですが。 データーベース (project)のユーザー名(dbo)の「所有しているスキーマ」にあるdata_reader, data_writer欄にチェックをいれても結果は同じです。 どこをどのように設定すれば良いのか、ご教示戴きますようお願い致します。

  • 他のDBのオブジェクトの利用

    同一スキーマ上の別のDBのテーブルを使ってビューを作成したり ストアドを作成したりする事は可能でしょうか? また、アクセスから接続しているDB以外のDBのテーブルに フォームやVBAからアクセスする事は可能でしょうか? (要は、アクセスのMDBのリンクテーブルの接続先が複数ある様な イメージです) やりたい事はアクセスの請求書発行システムのFORMから 取引先管理システムの取引先テーブルを参照したり、SQLの 請求書発行DBのビューやストアドで取引先管理DBのテーブルを 参照しいたいのです。