ПроблемаПользователь может создавать, но не выполнить хранимую процедуру,
У меня есть логин SQL Server, которому разрешено создавать хранимые процедуры, но не выполнять их. Я не могу использовать другой логин для выполнения выполнения, поэтому я ищу альтернативный способ запускать код в sp или предоставить эти разрешения.
Разрешение EXECUTE было отклонено по объекту 'sp_mystoredprocedurename', базе данных 'mydatabasename', схеме 'dbo'.
Пользователь не может предоставить выполнить для себя
не может предоставить, запретить или отменить разрешения на прод, DBO, владелец объекта, information_schema, SYS, или самостоятельно.
фон
У нас есть программное приложение для Windows, написанный в Powerbuilder, который создает и обновляет базу данных SQL Server, он работает на себя.
При первом запуске приложение предлагает ввести логин администратора базы данных, который он использует 1 раз (мы не храним эту информацию), чтобы создать базу данных и логин. Подписано логин db_ddladmin
, db_datareader
и db_datawriter
разрешений. В настоящее время у нас есть сотни таких приложений и баз данных на управляемых нами серверах, а также на собственных серверах наших клиентов.
По этой причине я сделал бы все, чтобы предотвратить необходимость повторного запроса пользователя для входа в систему администратора db, поэтому я могу предоставить разрешения на выполнение, что было бы самым простым способом ... Перенос всех серверов на SQL Server 2000 конечно, также не вариант :)
Хранимая процедура, которую я пытаюсь реализовать, является методом «getnewid». В настоящее время мой код Powerbuilder использует несколько встроенных инструкций TSQL для достижения этого, но из-за проблем с производительностью сети я хотел бы переместить их в одну хранимую процедуру.
Нет администратора db, поэтому ** Я не могу использовать грант **. Я на 99% уверен, что это уловка 22, и поэтому невозможно решить. Я просто хотел бы услышать, если я что-то пропустил или если есть альтернатива. В SQL Server 2000 было возможно, если вам было разрешено создать хранимую процедуру, вам было разрешено ее выполнить. –
HI, если вы ничего не делаете в своей логике sql, пользовательские функции (UDF) могут быть альтернативой. В случае, если у вас есть право выполнить или создать их. – DARKinVADER