允许用户列出功能的脚本。

时间:2014-01-28 16:37:52

标签: sql-server function

我需要允许用户访问SQL数据库中的所有函数。我需要将其安排为每天恢复的数据库上的工作。

恢复后,用户需要获得该功能的“选择”权限。这是手动执行此操作的屏幕截图。 http://screencast.com/t/H3jw6Odrk

如何为所有功能编写此操作的脚本。下面是获取该数据库中所有函数的脚本。有人能告诉我循环执行此功能的命令并授予“选择权限吗?”

谢谢你的时间..

USE DBNAME;
GO
SELECT name AS function_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%'
order by type_desc;
GO

1 个答案:

答案 0 :(得分:1)

我知道这可能不是最佳解决方案,但实现此目的的一种方法是使用光标。而不仅仅是将此代码放入您的工作中,该工作将在数据库恢复并且完成后运行。请注意,此代码实际上不具有GRANT权限,但仅打印出GRANT语句,您需要验证它是否是您想要的,而不是注释掉PRINT行并取消注释{ {1}}行。

EXEC

注意:可能关注的对象:请不要评论为什么游标不好,而是在自己的答案中提供替代解决方案。