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

 
RE:  一時テーブルに連結したサブフォームに入力できない

Date: Sat, 11 Aug 2007 20:38:13 +0900
From: "Akira Horikawa" <who@example.ne.jp>


堀川です、今晩は。



-----Original Message-----
From: GEMCO瀬谷 [mailto:who@example.co.jp]
Sent: Friday, August 10, 2007 3:29 PM
To: who@example.ne.jp
Subject: [ml-msde-beg:01950] 一時テーブルに連結したサブフォームに入力できな
い



Transact-SQL言語レベルでは、ローカル一時テーブルの作成や
レコード挿入や更新などの操作に関しては、特別な制限は無く
誰でも可能です(すべてのログインユーザが許可される)。


ところが、Access(ADP)の連結フォームのレコードセットで、
フォームからのデータ操作を行う場合、

              SQL Server 7.0 + SP2 以降
             (SQL Server 2000 を含む)

から、瀬谷さんがお話されているように、セキュリティ権限の
追加をしないと動きません(詳細は不明)。


             SQL Server 7.0
             SQL Server 7.0 + SP1

の環境では、一時テーブルのレコードソースを連結フォームに
割り当てることができます。

もう手に入りませんが書籍下巻のCDROMの中には、初代MSDE
(SQL Server7.0互換)の再配布バージョンが収録されておりますので、
それをインストールして頂ければ、

サービスパック無しのMSDEでは、問題無くローカル一時テーブルを
レコードソースにした連結フォームが作れることがわかります。
(Access2000の製品の中にも、MSDEが入っています)


また、その環境に、

SP1のダウンロード
http://www.microsoft.com/japan/sql/prodinfo/previousversions/downloads/70/sq
l70sp1.mspx

を当てても、動きます。


ところが、SP2を当てると
http://www.microsoft.com/japan/sql/prodinfo/previousversions/downloads/70/sq
l70sp2.mspx

動かなくなります。

ですから、SP1からSP2への変更で、セキュリティ上の何かの
仕様変更があったように思えます


SP2以降の環境で動かすためには、tempdbのguestユーザに、
                 db_datareader
を割り当てると、動きます(writerの権限は不要のようです)。


あるいは、tempdbに明確なユーザを登録し、そのユーザに
db_datareaderを与えて、そのユーザで連結フォーム操作を
行うこともできます。

もちろん、tempdbのデータベースオーナー権限を持っている
saログイン等でフォーム操作するのであれば、問題ありません。

ただ一時的にせよ、tempdbのテーブルの読み取り権限を
与えることになるので、他ユーザが作成した通常の
テーブルが読み取れることになります。

セキュリティ的に運用上問題無ければ(信頼のおける仲間内環境)なら
db_datareader権限を与えてもよいでしょう。

但しtempdbは、サーバーの起動時に初期化されますので、その都度
権限設定が必要になるので注意して下さい。
(modelデータベースがコピーされるので、modelに権限設定する案も
ありますが、一般データベース作成時に権限がコピーされるので
注意して下さい)。

一般的には、ローカル一時テーブルを使うのではなく、自分で
ローカル一時テーブルのようなユーザ単位でレコードが
識別できるような作業用テーブルを作ることをおすすめします。

例えば、レコードの列の中に、uniqueidentifier型の列(GUID値)を
用意して、ユーザにNEWID関数によってGUID値を割り当てて、その
GUID値を使ってレコードをユーザ単位で識別すれば、複数人の
レコードが混ざっても区別できます。

このような工夫をすればよいと思います。


------------------------------------
Epata-IT/日本技術ソフト開発
        堀川 明  (Akira Horikawa)
    08月11日(土曜日) 20時32分記
        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 までご連絡下さい。