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 工具