【问题标题】:Create user in SQL Server 2008在 SQL Server 2008 中创建用户
【发布时间】:2011-10-03 03:02:21
【问题描述】:

我的数据库中有 SQL Server 用户,由于某种原因,用户在连接时无法查看表

以下是我用来创建该用户的命令。我不想让用户 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下的所有表

谢谢

【问题讨论】:

  • 如果您发布代码、XML 或数据示例,在文本编辑器中突出显示这些行并单击编辑器上的“代码示例”按钮 ({ })工具栏以很好地格式化和语法突出显示它!
  • 感谢您为我编辑它。我会在这里做。

标签: sql sql-server sql-server-2008 permissions


【解决方案1】:

基于在Microsoft Connect 找到的解决方法

执行以下操作:

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

【讨论】:

    【解决方案2】:

    您确定用户正在连接到您的数据库而不是主数据库吗?并且您正在正确的数据库中创建用户?

    【讨论】:

    • 是的,我在我希望创建此用户的数据库中看到创建的用户。
    • @pkat:您确定该用户没有在某处被拒绝吗?我刚刚测试了你的代码,它适用于我的 dbo 模式。我唯一更改的是您创建登录用户后的单引号(删除它)和模式名称。此外,您可能不需要显式添加任何权限,因为 addrolemember 应该为您处理这些。
    【解决方案3】:

    扩展上述答案。

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

    【讨论】:

    • 有趣的是,这不起作用,我将它添加到我的脚本并运行,它仍然是同样的问题。但是当我跟随 NCGrimbo 时,它起作用了。
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 2012-09-27
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多