Я хочу знать, какие разрешения по умолчанию для хранимых процедур SQL-сервера. Например, я создал пользователя в базе данных, но не играет никакой роли или каких-либо разрешений, предоставленных за исключением права на выполнение, как:sql-сервер разрешения по умолчанию для сервера
GRANT EXECUTE ON SCHEMA :: [dbo] TO [newUser]
позже меня (как са входа в) создали хранимую процедуру, которая делает только выбрать из таблицу, как:
CREATE PROCEDURE dbo.selectX AS
BEGIN
SELECT ID, NAME FROM MyTable
END
и мой пользователь [NEWUSER] можно выполнить и увидеть результат оператора выбора, как:
EXEC dbo.selectX
До сих пор я могу предположить, что хранимые процедуры имеют разрешения по умолчанию, которые мой пользователь не имеет. Я пробовал другие dmls как UPDATE, INSERT, DELETE и пользователь успешно выполнил процедуры. Но! когда я создал proceure с 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 (create, drop table vs.)? Потому что я не видел никаких объяснений об этой ситуации в Books Online или где-либо еще. Любые комментарии будут приветствоваться.
поскольку для создания таблицы требуется разрешение на уровне схемы, ваши объяснения и предоставленные ссылки вполне удовлетворительны. –