我试图弄清楚为什么具有db_datareader
和db_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语句返回我需要的数据。我想知道这是否是某种许可问题。
答案 0 :(得分:1)
要运行存储过程,角色需要执行权限。
答案 1 :(得分:1)
我认为授予或拒绝权限将覆盖角色成员身份。您可能必须在表中专门授予“选择授予”权限。