在SQLServer中,为什么不授予对象权限将用户正确添加到db?

时间:2008-12-19 12:28:43

标签: sql sql-server sql-server-2005 permissions

这是我的设置:

  • SQL server 2005
  • UserA已在服务器上设置为用户,但未在databaseA上设置。
  • GRANT执行ON [GetOrders]至[UserA] AS [dbo]

如你所见,我错过了一步。我还没有将UserA添加到数据库中。这不会失败,让我授予对象执行权。

我相信在2000年它会抛出一个错误而不允许我这样做。

现在,我将所有这些对象设置为正确的权限,但用户无法看到数据库。要解决此问题,我必须从数据库中删除用户,正确地重新添加它们,然后授予权限。

为什么允许这样做,并且有一种方法可以阻止它,或者在给予新用户对象权限时自动创建db登录。

感谢。

2 个答案:

答案 0 :(得分:2)

这是让你失望的部分。

  

TO [UserA] AS [dbo]

抛弃“as dbo”部分。它授予dbo用户权利。没有“AS [dbo]”部分,它将引发错误。

答案 1 :(得分:1)

当数据库未连接到生产服务器时,可能允许DBA灵活地修改用户和权限。我不相信你必须重新添加用户。看看这个人的剧本:http://www.lazycoder.com/weblog/2007/06/04/re-associate-sql-users-with-logins/