C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: SqlServerのユーザについて


(過去ログ 36 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■17994 / inTopicNo.1)  SqlServerのユーザについて
  
□投稿者/ 小春 (8回)-(2008/05/07(Wed) 18:02:01)

分類:[データベース全般] 

お世話になっております。

SqlServerExpress2005について悩んでおります。

SqlServerのユーザ、スキーマに"test"というユーザ、スキーマを追加しました。
そして"testtable"というテーブルを作成し、スキーマを"test"に設定しました。(test.testtable)
そこでSqlServer認証モードで、sa でログインし、以下のSQL文を発行しました。

select * from testtable;

とすると、「testtableが無効です。」とエラーになります。
そこで、以下のSQL文に変更するとうまくいきました。

select * from [test].[testtable];

こうすると、全てのSQLのテーブルには[test]を付加しなくてはいけないのでしょうか?
それとも、なにか別の方法があるのでしょうか?
引用返信 編集キー/
■17995 / inTopicNo.2)  Re[1]: SqlServerのユーザについて
□投稿者/ Mr.T (232回)-(2008/05/07(Wed) 18:57:11)
Mr.Tです、こんにちは。

> そこでSqlServer認証モードで、sa でログインし、以下のSQL文を発行しました。

SQLを発行したデータベースがmasterとかになっている、とかじゃないんですか?
testに変更したらつけなくてもいけると思いますが。

#ツールバー→SQLエディタで出てくる、データベースのSelectboxで選択できますよ。
引用返信 編集キー/
■17997 / inTopicNo.3)  Re[1]: SqlServerのユーザについて
□投稿者/ はつね (645回)-(2008/05/07(Wed) 19:14:55)
はつね さんの Web サイト
2008/05/07(Wed) 19:25:42 編集(投稿者)

No17994 (小春 さん) に返信
> そこで、以下のSQL文に変更するとうまくいきました。
>
> select * from [test].[testtable];
>
> こうすると、全てのSQLのテーブルには[test]を付加しなくてはいけないのでしょうか?

既定のスキーマをtestに変更すれば[test].は省略可能です。

[説明が見つかったので追記]
http://msdn.microsoft.com/ja-jp/library/ms176060.aspx
引用返信 編集キー/
■17998 / inTopicNo.4)  Re[2]: SqlServerのユーザについて
□投稿者/ はつね (646回)-(2008/05/07(Wed) 19:22:05)
はつね さんの Web サイト
No17995 (Mr.T さん) に返信
>>そこでSqlServer認証モードで、sa でログインし、以下のSQL文を発行しました。
>
> SQLを発行したデータベースがmasterとかになっている、とかじゃないんですか?

テーブル参照のフルは、[DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject]です。
Mr.Tさんが書かれているmasterは[DatabaseName]ですので、今回の[DatabaseSchema]の指定とはちと違うような。
# このあたり、SQL Server 2000とSQL Server 2005で違います。


引用返信 編集キー/
■18026 / inTopicNo.5)  Re[3]: SqlServerのユーザについて
□投稿者/ Mr.T (233回)-(2008/05/08(Thu) 08:18:48)
> Mr.Tさんが書かれているmasterは[DatabaseName]ですので、今回の[DatabaseSchema]の指定とはちと違うような。
> # このあたり、SQL Server 2000とSQL Server 2005で違います。
うわ、その通りです。
申し訳ないです>質問者の方

引用返信 編集キー/
■18045 / inTopicNo.6)  Re[4]: SqlServerのユーザについて
□投稿者/ 小春 (10回)-(2008/05/08(Thu) 11:19:00)
Mr.Tさん、はつねさんご返答ありがとうございます。

>既定のスキーマをtestに変更すれば[test].は省略可能です。
とは、ログインの既定のスキーマのことですよね?
"sa"の既定のスキーマを変更すると、ユーザ'dbo'は変更できませんとエラーになり、変更することができませんでした。
ひょっとしてExpressだから・・・ですか・・・?

なので、"logintest"という別ログインを作成しました。
そして、[ログインのプロパティ]-[ユーザマッピング]にて、
ユーザ:logintest、既定のスキーマ:test
に設定しましたが、どうやらうまくいきません。

ログイン、ユーザ、スキーマが頭の中でごちゃごちゃになってきました。
なにか設定ミスしてるかもしれませんが、宜しくお願い致します。
引用返信 編集キー/
■18049 / inTopicNo.7)  Re[5]: SqlServerのユーザについて
□投稿者/ 片桐 (91回)-(2008/05/08(Thu) 12:12:34)
まず、saというユーザーは何でもできちゃう特殊ユーザーなので、データベースを作ったりサーバー環境を変更したりする時に使う方が無難ですね。

スキーマtest用にログインユーザー、logintest、というのを作るのは正解だと思います。

で、作ったlogintestというユーザーに、セキュリティのツリーにあるユーザーマッピングでtestスキーマにチェック。ここの操作は大丈夫ですか?これで、logintestにtestスキーマで操作できる権利がくっつけられます。

ここまでできてから、logintestユーザーの規定のスキーマをtestに設定しておきます。


引用返信 編集キー/
■18053 / inTopicNo.8)  Re[6]: SqlServerのユーザについて
□投稿者/ 小春 (11回)-(2008/05/08(Thu) 12:52:35)
No18049 (片桐 さん) に返信
> まず、saというユーザーは何でもできちゃう特殊ユーザーなので、データベースを作ったりサーバー環境を変更したりする時に使う方が無難ですね。
>
> スキーマtest用にログインユーザー、logintest、というのを作るのは正解だと思います。
>
> で、作ったlogintestというユーザーに、セキュリティのツリーにあるユーザーマッピングでtestスキーマにチェック。ここの操作は大丈夫ですか?これで、logintestにtestスキーマで操作できる権利がくっつけられます。
>
> ここまでできてから、logintestユーザーの規定のスキーマをtestに設定しておきます。
>

ご返答ありがとうございます。
一旦、DBから全て作成(Management Studio Expressで)すると、うまくいきました。

原因は、ユーザ作成する際に、コマンドにて作成したユーザが原因と思われます。
CREATE USER [test] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[test]

この「WITHOUT LOGIN」は調べるとログインとマッピングしないとされてるようですが、
この場合、スキーマの省略は不可(仕様)と考えていいんでしょうか?

引用返信 編集キー/
■18063 / inTopicNo.9)  Re[7]: SqlServerのユーザについて
□投稿者/ はつね (650回)-(2008/05/08(Thu) 14:21:37)
はつね さんの Web サイト
No18053 (小春 さん) に返信
> 一旦、DBから全て作成(Management Studio Expressで)すると、うまくいきました。

どううまくいったのでしょうか?
・saでログインして、[test]スキーマーを省略してテーブル指定できた?
・logintestでログインして、規定のスキーマーとして[test]を指定すると、スキーマーを省略してテーブル指定できた?


> 原因は、ユーザ作成する際に、コマンドにて作成したユーザが原因と思われます。
> CREATE USER [test] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[test]

現在の状態で上記のSQL文を投入すると上手く行かなくなるなどを確認して原因と認定していますか?
そうじゃないとしたら、全て作り直しているので何が悪かったかは不明確なままかと。

引用返信 編集キー/
■18095 / inTopicNo.10)  Re[8]: SqlServerのユーザについて
□投稿者/ 小春 (12回)-(2008/05/08(Thu) 17:10:12)
No18063 (はつね さん) に返信
ご返答ありがとうございます。

>>一旦、DBから全て作成(Management Studio Expressで)すると、うまくいきました。
>
> どううまくいったのでしょうか?
> ・saでログインして、[test]スキーマーを省略してテーブル指定できた?
> ・logintestでログインして、規定のスキーマーとして[test]を指定すると、スキーマーを省略してテーブル指定できた?
返答を略してしまい、申し訳ございません。
"sa"の既定のスキーマを変更すると、「ユーザ'dbo'は変更できません」とエラーになり、
変更することができなかったので、"sa"でのログインはしていません。
うまくいかなかったときは、ユーザを作成する際、下記のコマンドにて作成しました。
なので、Management Studio ExpressでDBからまた作り直すと"logintest"で省略してテーブル指定できるようになりました。
あいかわらず"sa"では「ユーザ'dbo'は変更できません」とエラーが出ています・・・。

>>原因は、ユーザ作成する際に、コマンドにて作成したユーザが原因と思われます。
>>CREATE USER [test] WITHOUT LOGIN WITH DEFAULT_SCHEMA=[test]
>
> 現在の状態で上記のSQL文を投入すると上手く行かなくなるなどを確認して原因と認定していますか?
> そうじゃないとしたら、全て作り直しているので何が悪かったかは不明確なままかと。
ユーザマッピングという機能はSQLServer2005から追加された新機能で、
その機能を使用しないとスキーマ省略ができないと判断しています。(自己調査ですけど…)
なので、WITHOUT LOGINという命令がログインとマッピングしないという点で、
原因と認定してました。
再度、ログインとのマッピングを「ログインなし」にしようとしたのですが、
Management Studio Express上では変更できませんでした。
ALTER USERコマンドでも、変更する命令が見つかりませんでした。

SQLServer2005って、難しいですね・・・。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -