2011-02-24 79 views
0

我创建一个登录名为mylogin与密码=“pass_1”用户登录SQL Server 2005中表达

然后我使用此登录&登录到SQL Server试图创建一个数据库,这给了错误权限被拒绝。

然后我执行此:sp_addsrvrolemember“mylogin”,“dbcreator”

于是,我再次用以上登录&登录到SQL Server试图创建一个数据库,这一次的成功创建了数据库

这是因为我为登录添加了dbcreator服务器角色。

但是,后来我创造了LOGIN mylogin一个USER myloginuser, 然后执行此查询: 然后再次我试图创建一个数据库,执行为用户=“myloginuser”

,但是失败了。为什么这样?

当用户MYLOGINUSER所关联的登录MYLOGIN有权创建数据库时,为什么用户没有权限?那么最新的解决方案呢?我是否必须单独授予用户权限,而不管授予登录的权限?

此外,为登录创建的用户必须在数据库内部创建吗?有必要吗?

回答

1

的LOGIN [mylogin]被mylogin默认的用户(其被创建执行

sp_addsrvrolemember 'mylogin', 'dbcreator'

因此,该mylogin用户已经分贝创建权限但是你为同一个登录创建了一个MYLOGINUSER,所以现有的用户mylogin被设置为孤立的用户,因此mylogin Login删除了db的创建者权限。

+0

非常感谢先生,但那我该如何给myloginuser创建表权限呢?当我使用sp_addsrvrolemember给它时,它说--login不存在。所以我必须使用GRANT? – sqlchild 2011-02-24 11:58:02

+0

@sqlchild,运行下面的脚本使用YOUR_DB exec sp_addrolemember'db_owner',myloginuser – Nanda 2011-02-24 12:15:20

+0

先生,我想知道,在sp_addsrvrolemember,用户名不能给?我们必须给它一个登录名?因为当我分别创建一个用户,然后试图授予dbcreator服务器角色给他,然后它给了错误。意味着如果我们希望用户使用与登录名称相同的名称创建,那么我们可以使用sp_addsrvrolemember,因为它创建了用户本身,但是当我们单独创建一个用户然后想要授予他时,我们就不能用它。 – sqlchild 2011-02-24 14:00:51

1

是否将SQL Server Authenticationmode设置为Mixed而不是Windows? Ypu'll必须将其设置为混合。

用户必须在SQL Server级别创建并赋予(映射到)数据库权限。

+0

亲爱的先生,如果我选择了Windows模式,我无法赋予新的登录权限? – sqlchild 2011-02-24 12:00:02