sql server 2005 express 中的用户和登录名

Posted

技术标签:

【中文标题】sql server 2005 express 中的用户和登录名【英文标题】:users and logins in sql server 2005 express 【发布时间】:2011-02-24 08:59:32 【问题描述】:

我创建了一个名为 mylogin 的登录名,密码为“pass_1”

然后我使用此登录名登录到 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 用户拥有 db create 权限。但是您已经为同一个登录创建了一个 MYLOGINUSER。因此,现有用户 mylogin 被设置为孤立用户,因此 mylogin 登录删除了数据库创建者权限。

【讨论】:

非常感谢先生,但是那我如何将创建表权限授予 myloginuser 呢?当我使用 sp_addsrvrolemember 给它时,它会说 --login 不存在。所以我必须使用 GRANT 吗? @sqlchild,运行以下脚本使用 YOUR_DB exec sp_addrolemember 'db_owner',myloginuser 先生,我想知道在 sp_addsrvrolemember 中,不能给出用户名?我们必须给它一个登录名吗?因为当我单独创建一个用户然后尝试将 dbcreator 服务器授予他的角色时,它给出了错误。意味着如果我们希望创建的用户与登录名相同,那么我们可以使用 sp_addsrvrolemember,因为它自己创建了用户,但是当我们单独创建一个用户然后想要授予他权限时,我们不能使用它。 先生,您能告诉我一本书或链接,我可以在其中找到架构、用户、角色、登录名的完整详细信息。因为我对所有这些感到困惑。我把他们搞砸了。【参考方案2】:

SQL Server 身份验证模式是否设置为混合而不是 Windows? Ypu 必须将其设置为混合。

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

【讨论】:

尊敬的先生,如果我选择了 Windows 模式,那么我将无法授予新登录权限吗?

以上是关于sql server 2005 express 中的用户和登录名的主要内容,如果未能解决你的问题,请参考以下文章

安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

在 SQL Server 2005 express 中使用连接

使用 Java 连接 SQL Server 2005 Express

SQL Server 2005 小型企业与 SQL Server Express 2012 [关闭]

已安装 SQL Server 2005,安装 SQL Server 2008 时提示需要删除 SQL Server 2005 Express 工具

安装 sql server 2005 express 后 sqlcmd 不工作