回答編集履歴
3
追記2
answer
CHANGED
@@ -34,4 +34,19 @@
|
|
34
34
|
|
35
35
|

|
36
36
|
|
37
|
-
お試しください。
|
37
|
+
お試しください。
|
38
|
+
|
39
|
+
**【追記2】**
|
40
|
+
|
41
|
+
下のコメント欄の 2021/10/08 06:54 の私のコメントで「文書見つかりました。後で解答欄に書いておきます」と書いた件です。
|
42
|
+
|
43
|
+
どうして EXECUTE を使うと対象テーブルにSELECT権限を与える必要があるのかですが、そういう仕様だということのようです。以下の記事を見てください。
|
44
|
+
|
45
|
+
アクセス許可
|
46
|
+
[https://docs.microsoft.com/ja-jp/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver15#permissions](https://docs.microsoft.com/ja-jp/sql/t-sql/language-elements/execute-transact-sql?view=sql-server-ver15#permissions)
|
47
|
+
|
48
|
+
抜粋: "EXECUTE ステートメントの実行に権限は必要ありませんが、 EXECUTE 文字列内で参照されるセキュリティ保護可能なリソースに対しては権限が必要です。 たとえば、この文字列に INSERT ステートメントが含まれている場合、EXECUTE ステートメントの呼び出し元は対象のテーブルに対する INSERT 権限が必要です。"
|
49
|
+
|
50
|
+
仕様ということらしいので、ストアドに EXECUTE を使う今回の質問の例の場合、ユーザーには対象テーブルに対する SELECT 権限も与える以外に解決策はなさそうです。
|
51
|
+
|
52
|
+
(上の「EXECUTE ステートメントの実行に権限は必要ありませんが」というのはストアドの「実行」権限の話ではありませんので注意してください。ストアドの「実行」権限はストアド内に EXECUTE ステートメントを使う/使わないにかかわらず、ユーザーに与える必要があります)
|
2
追記
answer
CHANGED
@@ -4,4 +4,34 @@
|
|
4
4
|
|
5
5
|

|
6
6
|
|
7
|
-
ハズレだったらすみません。
|
7
|
+
ハズレだったらすみません。
|
8
|
+
|
9
|
+
**【追記】**
|
10
|
+
|
11
|
+
下のコメント欄の 2021/10/06 12:58 の私のコメントで「自分の環境でやってみましたが、ストアドの実行権限を与えるだけではダメで、当該テーブルの SELECT 権限も必要という結果でした。詳しくは後で回答欄に追記しておきます」と書いた件です。
|
12
|
+
|
13
|
+
Windows 10 Pro 64-bit にインストールした SQL Server 2012 の以下の画像の Student テーブルで試してみました。
|
14
|
+
|
15
|
+

|
16
|
+
|
17
|
+
権限を与えるのは IIS のワーカープロセスのアカウントにした NETWORK SERVICE にしましたので、Student テーブルのあるデータベース TestDatabase のログインに NETWORK SERVICE を追加。
|
18
|
+
|
19
|
+

|
20
|
+
|
21
|
+
ストアドプロシージャを作成。
|
22
|
+
|
23
|
+

|
24
|
+
|
25
|
+
NETWORK SERVICE にストアドプロシージャの実行権限を付与。これだけでは「SELECT 権限がオブジェクト・・・」というエラーになります。
|
26
|
+
|
27
|
+

|
28
|
+
|
29
|
+
エラーメッセージは SELECT 権限がないと言っているので、NETWORK SERVICE に Student テーブルに対する SELECT 権限を与えます。
|
30
|
+
|
31
|
+

|
32
|
+
|
33
|
+
以上でエラーは解消します。実行結果は以下の通りです。
|
34
|
+
|
35
|
+

|
36
|
+
|
37
|
+
お試しください。
|
1
訂正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
検証したわけではないのでハズレかもしれませんが・・・
|
2
2
|
|
3
|
-
SSMS を操作して「ログインユーザー太郎」に当該ストアドプロシージャに
|
3
|
+
SSMS を操作して「ログインユーザー太郎」に当該ストアドプロシージャに対する「実行」権限を与えたらどうなりますか?
|
4
4
|
|
5
5
|

|
6
6
|
|