2008-12-19 17 views
1

这是我的设置:在SQLServer中,为什么不授予对象权限将用户正确添加到db?

  • SQL Server 2005中
  • 用户A已经设置为用户的服务器上,但不是在databaseA。
  • 授予执行ON [GetOrders]至[用户A] AS [DBO]

正如你所看到的,我已经错过了一步。我还没有将UserA添加到数据库中。这不会失败,并允许我在该对象上授予执行权。

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

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

为什么这是允许的,是否有办法阻止它或让它创建数据库登录自动每当一个新的用户被授予对象的权限。

谢谢。

+0

当我试图在2005服务器上设置为2005兼容性的数据库中执行此操作时收到错误消息。我更像是一名SQL开发人员而不是DBA,所以也许我错过了一些东西。 – 2008-12-19 15:43:15

回答

1

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

+0

我试过了sp_change_users_login,它什么也没做: 更新用户修正的孤儿用户数为0. 通过增加新登录然后更新用户修复的孤儿用户数为0。 – HAdes 2008-12-19 14:52:21

2

这是扔掉你的部分。

TO [用户a] AS [DBO]

沟的 “为DBO” 的一部分。它授予dbo用户的权利。如果没有“AS [dbo]”部分,则会引发错误。