您可以使用SQL Server数据库中的db_datareader角色成员身份访问表约束

时间:2019-03-28 20:50:17

标签: sql sql-server

我试图弄清楚为什么具有db_datareaderdb_datawriter成员身份的特定SQL Server数据库用户不能运行在特定表上获取某些检查约束的select语句。

我在代码中运行了select语句,但是它不返回任何数据。我想也许为了获得约束信息,您可能需要不同的权限。我已经尝试去研究一些角色及其含义,但是还不清楚db_reader角色到底能做什么。

string constraintCommand = @"SELECT tc.CONSTRAINT_NAME, CC.CHECK_CLAUSE
    FROM[INFORMATION_SCHEMA].[CHECK_CONSTRAINTS as cc
    INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS as tc ON cc.CONSTRAINT_NAME = tc.CONSTRAINT_NAME AND cc.CONSTRAINT_SCHEMA = tc.TABLE_SCHEMA
    WHERE tc.TABLE_NAME = 'VideoSources'";

这在C#中。我以我自己的身份(db_owner在SSMS中运行SQL语句,该SQL语句返回我需要的数据。我想知道这是否是某种许可问题。

2 个答案:

答案 0 :(得分:1)

要运行存储过程,角色需要执行权限。

答案 1 :(得分:1)

我认为授予或拒绝权限将覆盖角色成员身份。您可能必须在表中专门授予“选择授予”权限。