みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

select * from [テーブル名] で問い合わせをしたいんですが、
select * from [スキーマ名].[テーブル名] でなければエラーになってしまいます。
(「オブジェクト名 'テーブル名' は無効です。」といった、テーブルが無い旨のエラーが出ます。)

所有者(スキーマ名?)をdboに変更してするとテーブル名だけで参照できます。

例えば、テーブルの所有者を'test_user'に変更した場合、
test_userでログインしているにもかかわらず(クエリアナライザ)、修飾が無いと参照できません。
'test_user'はsystem administratorsロールに入れてあります。

SQLServerをインストールし直して DBを一から構築してもそうなります。
何か施さないといけないことがあるのでしょうか。
思い当たることがございましたら、ご教示頂ければと思います。
環境は SQL Server 2000 です。

投稿日時 - 2009-02-01 22:15:38

QNo.4681290

すぐに回答ほしいです

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

しまった。言葉足らずでしたか。。
SysAdmin(System Administrator)を付与しているからそうなるのです。
SysAdmin権限を持っていると自動的にdboで接続されるので、SELECT * FROM TABLE1とやると、SELECT * FROM test_user.TABLE1ではなく、SELECT * FROM dbo.TABLE1を実行しようとするのです。
これは仕様だと思いますよ。

投稿日時 - 2009-02-02 11:41:05

お礼

うわっっ、おっしゃる通り、ロールからはずしたら解決しました!
そういう理由だったのですね、理解しました!
本当に助かりました、ありがとうございました!!

投稿日時 - 2009-02-02 11:51:00

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

そのユーザにsysadmin権限を与えていると、自動的にdboで接続されます。

投稿日時 - 2009-02-02 10:49:13

お礼

ご回答ありがとうございます。
sysadmin権限とは、
system administratorsロールのことでしょうか?
であれば既に付与しています、

投稿日時 - 2009-02-02 11:19:25

あなたにオススメの質問