我有一个microsoft sql server数据库和一组用户。现在,在我的应用程序中,如果用户输入了具有特定权限(admin)的用户名和密码,我只想显示某些功能。由于数据库和用户名及其权限可以更改,我如何检查microsoft sql server用户具有哪些权限/权限?
答案 0 :(得分:6)
您可以使用[sys.fn_mypermissions][1]
检查当前用户对某些安全性的权限,该CONTROL SERVER
会返回安全保护的所有权限。您还可以使用HAS_PERMS_BY_NAME
检查特定权限。例如。您可以检查SELECT HAS_PERMS_BY_NAME(null, null, 'CONTROL SERVER');
权限,这意味着管理员已登录:
{{1}}
答案 1 :(得分:0)
我不完全确定我理解你的问题定义,但假设我这样做.....
我建议您创建一个SQL Server数据库角色,您可以通过应用程序(或Windows域组)中维护的某些组成员身份添加相关的应用程序用户。您可以使用组到角色映射来独立管理用户成员资格,从通过角色管理数据库中的相关权限到安全性。
这样,您只需要检查应用程序用户是否是相关应用程序或Windows组的成员,而无需查询SQL Server的安全配置。
答案 2 :(得分:0)
执行此操作的最简单方法是使用IS_MEMBER函数,该函数检查用户是否在角色/组db_owner中。该函数将在数据库级别执行检查。 如果需要在服务器级别进行检查,则可以使用IS_SRVROLEMEMBER函数。两者都是自sql server 2005以来可用的。