SQLServerのストアドプロシージャのデフォルトのアクセス許可を知りたいのですが。たとえば、データベースにユーザーを作成しましたが、次のような実行権限を除いて、ロールまたは権限が付与されていません。
GRANT EXECUTE ON SCHEMA :: [dbo] TO [newUser]
後で私は(saログインとして)次のようなテーブルから選択するだけのストアドプロシージャを作成しました。
CREATE PROCEDURE dbo.selectX AS
BEGIN
SELECT ID, NAME FROM MyTable
END
そして、私のユーザー[ newUser ]は、次のようなselectステートメントの結果を実行して表示できます。
EXEC dbo.selectX
これまで、ストアドプロシージャには、ユーザーにはないデフォルトのアクセス許可があると想定できます。UPDATE、INSERT、DELETEなどの他のDMLを試しましたが、ユーザーはプロシージャを正常に実行できました。だが!作成テーブルとしてddlを使用してプロシージャを作成したとき..次のようになります。
CREATE PROCEDURE dbo.crtNT AS
BEGIN
CREATE TABLE del(id int) --for test
END
newUserを実行すると、次のようなエラーが発生します。
CREATE TABLE permission denied in database 'MyDb'
そして、ここに私の質問があります:デフォルトでは、ストアドプロシージャはDML(選択、挿入、更新vs.)では許可されていますが、DDL(作成、テーブルの削除vs.)では許可されていませんか?BooksOnlineや他の場所でこの状況についての説明が見当たらなかったからです。コメントは大歓迎です。