指定用于部署的SQL CLR用户定义函数的已授予权限

时间:2012-12-04 18:34:55

标签: .net sqlclr database-permissions

我在.NET 2.0中创建了一个用户定义的函数,并且能够将其成功部署到我的本地SQL Server实例。但是,我需要授予该功能的特定用户EXECUTE权限。我希望在CLR方法本身中完成此操作,这样每次重新部署UDF时都不必手动重新授予权限。从Visual Studio部署CLR函数会在数据库中生成此函数:

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 个答案:

答案 0 :(得分:1)

是 - 请参阅MSDN - 您只需在根目录中的项目中创建一个名为PostDeployScript.sql的脚本,它就会自动附加到构建输出中。

请注意,在VS2012中,Add ...对话框有一个选项可以添加类型为“Script(PostDeployment)”或类似的脚本 - 但是它会在文件名中添加惯用的“1”,然后它就会工作。虽然在MSDN中也提到过,但我并没有进一步考虑,因为第一种方法是有效的。