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 技術サポート情報一覧]
|