2011-07-11 296 views
0

创建用户我有SQL Server用户在数据库中,出于某种原因,用户无法连接在SQL Server 2008

时查看表下面是我使用的创建用户的命令。我不想让用户dbuser架构的所有者。

create user dbuser for login dbuser' 

--on the specific database, I am using these commands. 
exec sp_addrolemember @rolename = 'db_datareader', @membername = 'dbuser' 
exec sp_addrolemember @rolename = 'db_datawriter', @membername = 'dbuser' 

grant select on schema :: [schema1] TO [dbuser] 
grant insert on schema :: [schema1] TO [dbuser] 
grant update on schema :: [schema1] TO [dbuser] 
grant execute on schema :: [schema1] TO [dbuser] 

grant select on schema :: [schema2] TO [dbuser] 
grant insert on schema :: [schema2] TO [dbuser] 
grant update on schema :: [schema2] TO [dbuser] 
grant execute on schema :: [schema2] TO [dbuser] 

即使我授予的模式。与dbuser登录时,用户的所有插入和更新的访问是无法从任何模式的查看任何表中。当用户尝试连接到数据库时,他只会看到系统表选项卡。用户需要看到schema1,schema2, schema3

感谢

+0

如果您发布的代码,XML或数据样本,** **请在高亮文本编辑器的线和编辑器工具栏上的漂亮格式点击“代码示例”按钮('{}')并语法突出显示它! –

+1

感谢您为我编辑它。我会在这里做。 – iims

回答

1

基于在Microsoft Connect

找到一个解决办法做到以下几点:

要解决此问题,你必须以管理员身份登录,右击 数据库节点,选择属性,权限,并授予用户“查看 定义”权限。

1

您确保用户连接到你的数据库,而不是掌握下的所有表?而且你是在正确的数据库中创建用户?

+0

是的我是我看到用户创建,在我希望创建此用户的数据库。 – iims

+0

@pkat:你确定用户在某处不是DENYd吗?我只是测试了你的代码,它对dbo schema有效。我改变的唯一的事情就是创建登录用户(删除它)后的单引号和架构名称。此外,您可能不需要明确添加任何权限,因为addrolemember应该为您处理这些问题。 – jmoreno

1

扩展上述答案。

GRANT VIEW DEFINITION ON SCHEMA::[schema1] TO [dbuser]; 
GRANT VIEW DEFINITION ON SCHEMA::[schema2] TO [dbuser]; 
+0

有趣的是,这没有奏效,我把它添加到我的脚本并跑了,它仍然是同样的问题。但是当我跟着时,NCGrimbo,它的工作。 – iims