Указание предоставленных разрешений для пользовательских функций SQL CLR для развертывания
Я создал пользовательскую функцию в.NET 2.0 и могу успешно развернуть ее на своем локальном экземпляре SQL Server. Однако мне нужно предоставить конкретного пользователя EXECUTE
разрешение на функцию. Я хочу, чтобы это было сделано в самом методе CLR, чтобы мне не приходилось вручную повторно предоставлять разрешение каждый раз, когда я повторно развертываю UDF. Развертывание функции CLR из Visual Studio создает эту функцию в базе данных:
ALTER FUNCTION [dbo].[MyFunction](@input [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [LibName].[UserDefinedFunctions].[MyFunction]
GO
Есть ли способ, которым я могу это сделать это:
GRANT EXECUTE ON [dbo].[MyFunction] TO [wwwUser] AS [dbo]
Благодарю.
1 ответ
Да - смотрите MSDN - вы просто создаете скрипт с именем PostDeployScript.sql в своем проекте в корневом каталоге, и он автоматически добавляется к выходным данным сборки.
Обратите внимание, что в VS2012 в диалоговом окне "Добавить..." есть возможность добавить сценарий типа "Script (PostDeployment)" или аналогичный, но затем он добавляет обычное "1" к имени файла, и это затем не работает. Я не удосужился посмотреть дальше, хотя это также упоминается в MSDN, потому что первый метод просто работает.