SQL Server 2005 - 用户权限

Posted

技术标签:

【中文标题】SQL Server 2005 - 用户权限【英文标题】:SQL server 2005 - user rights 【发布时间】:2010-04-01 09:31:26 【问题描述】:

我在 SQL Server 2005 中创建了一个名为“tuser”的用户,具有创建数据库权限。 并将master和msdb数据库的“db_owner”数据库角色赋予“tuser”。

当我运行创建数据库的脚本时,从这个用户登录开始,它将创建新的数据库。 但是“tuser”无权访问从脚本生成的新创建的数据库。

任何人有任何想法吗?我想编写脚本,以便“tuser”在创建后可以访问新创建的数据库,并且可以添加新创建的数据库的用户权限。

我想在创建新数据库的同一脚本中为新创建的数据库上的“tuser”赋予“db_owner”数据库角色。该脚本在“tuser”下运行。

【问题讨论】:

【参考方案1】:

securityadmin 服务器角色授予[tuser]

安全管理员的成员已修复 服务器角色管理登录名及其 特性。他们可以授予、拒绝和 REVOKE 服务器级权限。他们 还可以 GRANT、DENY 和 REVOKE 数据库级权限。 此外,他们可以重置密码 用于 SQL Server 登录。

【讨论】:

我想在创建新数据库的同一脚本中将“db_owner”数据库角色赋予新创建的数据库上的“tuser”。该脚本在“tuser”下运行。 在您的脚本上,创建数据库后:USE [yourdb] GO CREATE USER [tuser] FOR LOGIN [tuser] GO EXEC sp_addrolemember N'db_owner', N'tuser' GO "在你的脚本上,创建数据库后: USE [yourdb] GO CREATE USER [tuser] FOR LOGIN [tuser] GO EXEC sp_addrolemember N'db_owner', N'tuser' GO " 如上你当我使用 tuser 运行 USE [yourdb] 时,已经写了语句 USE [yourdb],当时我遇到了错误。因为 tuser 对 master 和 msdb 数据库具有 DBcreator 服务器角色访问权限和 db_owner 访问权限。 你能发布你的完整脚本吗?如果在 tuser 登录下创建数据库。它应该已经拥有 db_owner 权限。【参考方案2】:

CREATE DATABASE 说

每个数据库都有一个所有者,可以 开展特殊活动 数据库。所有者是用户 创建数据库。数据库 可以通过使用更改所有者 sp_changedbowner (Transact-SQL)。

所以 tuser 应该已经拥有数据库了。

但是,您可以在模型数据库中将 tuser 设置为 db_owner,该模型数据库用作每个数据库创建的模板

顺便说一句,为什么要让 tuser 成为 master 和 msdb 的所有者?

【讨论】:

我已将 tuser 的“db_Owner”数据库角色的访问权限授予 Model db,即使它不起作用。 它将与 db_owner 一起使用。这就是 db_owner 的重点。你得到什么错误?【参考方案3】:

如果 tuser 无权访问新数据库,则意味着它不是所有者。不能拒绝数据库所有者访问他/她自己的数据库。

CREATE DATABASE 语句的外观如何?您是否有任何 AUTHORIZATION 子句会更改新数据库的数据库所有权? 谁是新数据库的实际所有者?检查SELECT name, SUSER_SNAME(owner_sid) FROM sys.databases;

【讨论】:

【参考方案4】:

感谢您的意见。

我已授予 tuser 从创建的新数据库访问数据库的权限。 现在问题解决了。

非常感谢。

【讨论】:

以上是关于SQL Server 2005 - 用户权限的主要内容,如果未能解决你的问题,请参考以下文章

在SQL2005中添加新用户出错无权限!!

sql server 2000 单用户如何设置?

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

Reporting Services SQL Server 2005 文件共享错误

在MSSQL SERVER2005中,如何给用户授予只有创建表、没有删除表及修改表结构的权限

怎样在SQL Server2005中删除数据库用户