Указание предоставленных разрешений для пользовательских функций 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, потому что первый метод просто работает.

Другие вопросы по тегам