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 - 用户权限的主要内容,如果未能解决你的问题,请参考以下文章
sql server 2005 express 中的用户和登录名
Reporting Services SQL Server 2005 文件共享错误