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

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

Date: Mon, 13 Aug 2007 19:20:27 +0900
From: GEMCO瀬谷 <who@example.co.jp>


いつもお世話になっております。瀬谷です。
堀川様、ご回答ありがとうございます。

勉強になりました
ありがとうございました

社内運用なので、
tempdbにユーザを登録し、そのユーザにdb_datareaderを与えてという方法になるか、 

作業用テーブルによるユーザ単位で識別する方法にするかを検討してみます

レコード数は1年間でほぼ変動無しで各レコードの各項目を複数人数で入力すると
いう事で、
入力フォームに入力項目別にチェックボックスを作成し、チェックした項目のみを
サブフォームに表示し、登録実行でメインのテーブルへinsert又はupdateという処理を 

する為に、一時テーブルへ入力する方法をとっていました

> 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 までご連絡下さい。