3

一時テーブル #foo を作成する権限を SQL ロールに付与し、そのテーブルを操作する権限 (SELECT、INSERT、および DELETE) を付与したいと考えています。テーブル #foo が作成されていない場合 (このロールに属するユーザーが作成および管理します) はどうすれば可能ですか?

ありがとう

注: 可能であれば、ソリューションは SQL 2008 と SQL Azure の両方で動作するはずです。

4

3 に答える 3

2

できません:

グローバル一時テーブルは、テーブルを作成したセッションが終了し、他のすべてのタスクがそれらの参照を停止すると、自動的に削除されます。タスクとテーブルの間の関連付けは、単一のTransact-SQLステートメントの存続期間中のみ維持されます。これは、作成セッションが終了したときにテーブルをアクティブに参照していた最後のTransact-SQLステートメントの完了時に、グローバル一時テーブルが削除されることを意味します。 リンクテキスト

于 2011-01-18T20:37:09.773 に答える
1

Azureについてはよくわかりませんが...

tempdb にテーブルを明示的に作成すると、テーブルはセッション間で保持されますが、サーバーの再起動時に消去されます。

create table tempdb..authors (au_id char(11))

##TempTable を作成すると、グローバルに表示されますが、作成者のセッションで終了します。

于 2011-01-18T20:43:04.327 に答える
0

どうやら、で作成されたユーザーAUTHORIZATION dboは、データベースに接続すると、一時テーブルを作成および管理する権限を既に持っているようです。このユーザーがデータベース内の他のテーブルにアクセスする必要がある場合にのみ、明示的な権限を付与する必要があります。

于 2011-01-21T01:34:31.560 に答える