MSDE FunClub
Microsoft Data Engine FunClub
MSDE初心者向けメーリングリスト過去ログ[328]番
 
[TOP]>[MSDE初心者向けメーリングリスト過去ログ(328番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
RE:  ACCESS の連結フォームでグローバル一時テーブルを更新するには?

Date: Sat, 22 Jun 2002 09:38:32 +0900
From: "Akira Horikawa" <who@example.ne.jp>


堀川です、おはようございます

-----Original Message-----
From: who@example.co.jp [mailto:who@example.co.jp] 
Sent: Wednesday, June 19, 2002 8:47 PM
To: who@example.ne.jp
Subject: [ml-msde-beg:00318] ACCESSの連結フォームでグローバル一時テーブ
ルを更新するには?


#ちょっと初心者的な質問を超えているような感じ。。。。


>ストアードプロシージャで作成したグローバル一時テーブルを、
>ACCESS連結フォームのレコードソースに設定し、追加、更新
>を行おうとしています。
>saユーザであれば更新可能なのですが、その他のユーザだと
>読込み専用になってします。

まず最初に、
 (1)saログインだけ、SELECTや更新系のSQL文の実行ができる
 (2)他のユーザは、SELECTだけ許可され、更新系の命令が実行できない
という状況では、何を疑ったらよいでしょうか?

テーブルに対するセキュリティ違反が発生しているわけです

SELECT、UPDATE、INSERT、DELETEの権限が許可されていないと
テーブルに対する操作は禁止されます。

そのテーブルが、グローバル一時テーブルになっているわけです。
グローバル一時テーブルにも、セキュリティが働きます。
グローバル一時テーブルは、tempdbデータベースの中に作成されます。

グローバル一時テーブルの名前が、
                               ##gtbl
とすれば、
                               ##gtbl
という名前の実際のテーブルが、tempdbの中に作成されます。

ただSQLServer2000などでは、このようなテーブル名は表示されません。
しかし、tempdbのsysobjectsシステムテーブルを開くと、オブジェクトの
名前に、##gtbl が存在することがわかります。


テーブルに対するセキュリティ設定は、grant文を使います。

  GRANT  ステートメント命令  ON  テーブル名  TO ユーザ名

の書式です。

ただ注意するのは、GRANT文は、カレントデータベースに対する
セキュリティ設定をする命令です。

このためグローバル一時テーブルに対するセキュリティ設定を行なう
ためにはtempdbに接続しなければいけません。

     Use  tempdb
     GRANT  UPDATE  ON  ##gtbl  TO  UserName

問題は、誰にセキュリティを許可するか?
tempdbのデータベースユーザ名を指定してください。

tempdbのデータベースユーザは、デフォルトでは、dbo や guest 
しかいません。
新しいデータベースユーザを登録しても良いですが、guestユーザ
に許可を与えたらどうでしょうか?

            GRANT   ALL   ON   ##gtbl   TO  guest

ALLで、すべての権限が与えられます。

グローバル一時テーブルを作成した後に、カレントデータベースを
tempdbにしたら、上記のGRANT文を実行しましょう。



余談ですが、tempdbデータベースでは、一般のデータベースに比べて
Insert命令が最大で4倍速いそうです。
(データベースのログ管理が他のDBと違う。『Inside SQLServer』参照)

トランザクションログ管理が不要になるため、作業用テーブルは
普通のデータベースの中に作成するのではなく、tempdbの中に
作成した方が良いわけです。


------------------------------------
(株)日本技術ソフト開発
        堀川 明  (Akira Horikawa)
    06月22日(土曜日) 09時38分記
        mailto:who@example.ne.jp
        http://www.horikawa.ne.jp/msde/



[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。