如果我对某些内容有权限,我怎么能问SQL服务器?(插入,更新等)

Mas*_*low 8 sql-server unit-testing

我正在尝试为数据库层编写单元测试,以验证连接字符串的用户是否具有更新/插入/读取权限.插入/回滚会在标识列或启动触发器中创建额外的间隙.对于读取权限,对表进行选择会在sql数据库上创建加载/工作,并在统计信息中最后一次搜索表时进行更新.如何以编程方式向sql server询问当前用户对对象/表/视图/存储过程/等的权限.

我想它在某个地方的系统表中.

Rem*_*anu 14

您可以使用HAS_PERMS_BY_NAME单独申请每个权限:

SELECT HAS_PERMS_BY_NAME('<table>', 'OBJECT', 'SELECT');
SELECT HAS_PERMS_BY_NAME('<table>', 'OBJECT', 'UPDATE');
...
Run Code Online (Sandbox Code Playgroud)

或者您可以使用fn_my_permissions请求所有权限:

SELECT * FROM sys.fn_my_permissions('<table>', 'object');
Run Code Online (Sandbox Code Playgroud)