您能否访问SQL Server数据库中具有db_datareader角色成员身份的表约束

您能否访问SQL Server数据库中具有db_datareader角色成员身份的表约束,sql,sql-server,Sql,Sql Server,我试图弄清楚为什么拥有db\u datareader和db\u datawriter成员资格的特定SQL Server数据库用户不能运行select语句来获取特定表上的某些检查约束 我在代码中运行select语句,但它不返回任何数据。我想,为了获取约束信息,您可能需要不同的权限。我试着去看看其中的一些角色,以及它们的意思,但不清楚db_reader角色到底能做什么 string constraintCommand = @"SELECT tc.CONSTRAINT_NAME, CC.CHECK_C

我试图弄清楚为什么拥有
db\u datareader
db\u 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#。我以我的身份在SSMS中运行SQL语句(
db_owner
),SQL语句返回我需要的数据。我想知道这是否是某种权限问题。

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

我认为权限授予或拒绝会覆盖角色成员资格。您可能需要在表中明确授予Select权限。

请检查此日志,该日志可能重复在该用户上运行有关数据库工作的Grant view定义。我运行:使用[我的数据库名称];去;将视图定义授予数据库用户