SQL Server 2005 - предоставление разрешения на создание хранимых процедур (но без других объектов)

Я хочу предоставить пользователю разрешение на создание, изменение и выполнение хранимых процедур, но без возможности создавать другие объекты базы данных. Я исключил их из роли db_ddladmin, но явно предоставил разрешения «Создать процедуру» и «Выполнить». Эти разрешения появятся в списке действующих разрешений. Однако, когда я пытаюсь создать хранимую процедуру с этим логином, я получаю следующую ошибку:

«Указанное имя схемы« dbo »либо не существует, либо у вас нет разрешения на его использование».

Какие-либо предложения?


person user17777    schedule 22.10.2008    source источник


Ответы (2)


Пользователь может создавать процедуры в схеме, которой он владеет. Таким образом, вы можете настроить схему, по которой пользователь будет выполнять работу по разработке. Затем, если это должен быть dbo, администратор может поместить его туда, когда разработка будет завершена.

person ScottStonehouse    schedule 22.10.2008
comment
Согласовано. Создайте новую схему, в которой пользователи смогут создавать свои sprocs. Предоставьте им доступ к этой схеме, и все будет в порядке! - person Dave Markle; 23.10.2008

Если вы можете создать (или изменить) и выполнить хранимую процедуру, вы можете делать что угодно.

Выполнение хранимой процедуры подразумевает все другие разрешения в контексте этой процедуры. Поэтому, если вы можете изменить процедуру и запустить ее, нет смысла ограничивать что-либо еще. Вы можете просто сделать так, чтобы процедура действовала от вашего имени в качестве доверенного лица.

person Joel Coehoorn    schedule 22.10.2008
comment
Это не очень хорошо. Другие СУБД позволяют создавать хранимые процедуры без необходимости иметь полномочия на создание других типов объектов, таких как таблицы. Вы не можете создать хранимую процедуру, чтобы делать то, на что у вас нет разрешений. Так, например, вы можете дать кому-то право создавать хранимую процедуру для чтения или обновления таблиц в базе данных, но он не сможет делать такие вещи, как создание таблиц или создание хранимой процедуры для удаления всех таблиц в базе данных. база данных. - person Rob at TVSeries.com; 20.05.2013
comment
В SQL Server небезопасно, только если пользователь может создавать хранимые процедуры в схеме, принадлежащей другому пользователю. Хранимые процедуры запускаются от имени вызывающего абонента или владельца (по вашему выбору) и подавляют проверку разрешений для других объектов, принадлежащих владельцу хранимой процедуры. Таким образом, собственная схема пользователя - это надежная песочница. - person David Browne - Microsoft; 27.08.2018