请高手帮忙!!!

wazh 2006-03-16 08:03:30

问题1:
在企业管理器中,数据库的用户中,[名称]列显示“guest”,[登录名]列显示为空,[数据库访问]列显示“通过组成员资格”。
(1)此用户不允许删除,为什么?
(2)如何删掉这个用户?
(3)创建这样的用户有什么作用或意义?
(4)这样的用户是如何创建的?

问题2:
在企业管理器中,数据库的用户中,没有显示任何用户,但在另一台Web服务器上的网站却能正常访问数据库服务器。
(1)为什么会出现这种情况?
(2)表对象的所有者用户也不显示,那表对象是如何创建的?
(3)是如何实现对数据库的访问的?
(4)如何做到这一点?

请高手解答!!!
...全文
203 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wazh 2006-03-19
  • 打赏
  • 举报
回复
第一个问题中,在用户数据库中也不允许删除guest用户,提示“错误 15008:当前数据库中不存在用户 'guest'。”

-----------------------------------------
但在数据库中确实显示Guest用户,而且不允许删除,纳闷!!!


第二个问题, 应该是你的数据库不正常吧? 新建一个库呢?
-----------------------------------------
如果说不正常,另一台Web服务器却能正常访问,真是怪事儿!!!


rouqu 2006-03-17
  • 打赏
  • 举报
回复
Mark
lzuyh 2006-03-17
  • 打赏
  • 举报
回复
学习
zjcxc 2006-03-17
  • 打赏
  • 举报
回复
第二个问题, 应该是你的数据库不正常吧? 新建一个库呢?
zjcxc 2006-03-17
  • 打赏
  • 举报
回复
第一个问题中,在用户数据库中也不允许删除guest用户,提示“错误 15008:当前数据库中不存在用户 'guest'。”





那就是已经没有guest啦
OracleRoob 2006-03-16
  • 打赏
  • 举报
回复
关注!
wazh 2006-03-16
  • 打赏
  • 举报
回复
非常感谢邹大哥的回复!!!

第一个问题中,在用户数据库中也不允许删除guest用户,提示“错误 15008:当前数据库中不存在用户 'guest'。”

第二个问题中,确实不存在dbo用户,在安全性-->登录界面中,打开sa的属性页时,很可能是因为这个原因而提示错误“错误 21776: [SQL-DMO]名称“dbo”在 Users 集合中没有找到。如果该名称是合法名称,则使用 [] 来分隔名称的不同部分,然后重试。”
zjcxc 2006-03-16
  • 打赏
  • 举报
回复
要控制对数据库的权限, 可以参考下面的:

-- 防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限)

--切换到你新增的用户要控制的数据库
use 你的库名
go

--新增用户
exec sp_addlogin 'test' --添加登录
exec sp_grantdbaccess N'test' --使其成为当前数据库的合法用户
exec sp_addrolemember N'db_owner', N'test' --授予对自己数据库的所有权限

--这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表
go

--删除测试用户
exec sp_revokedbaccess N'test' --移除对数据库的访问权限
exec sp_droplogin N'test' --删除登录


如果在企业管理器中创建的话,就用:

企业管理器--安全性--右键登录--新建登录

常规项
--名称中输入用户名
--身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户)
--默认设置中,选择你新建的用户要访问的数据库名

服务器角色项
这个里面不要选择任何东西

数据库访问项
勾选你创建的用户需要访问的数据库名
数据库角色中允许,勾选"public","db_ownew"

确定,这样建好的用户与上面语句建立的用户一样
---------------------------------------------------------------------------

最后一步,为具体的用户设置具体的访问权限,这个可以参考下面的最简示例:

--添加只允许访问指定表的用户:
exec sp_addlogin '用户名','密码','默认数据库名'

--添加到数据库
exec sp_grantdbaccess '用户名'

--分配整表权限
GRANT SELECT , INSERT , UPDATE , DELETE ON table1 TO [用户名]

--分配权限到具体的列
GRANT SELECT , UPDATE ON table1(id,AA) TO [用户名]


-------------------------------------------------------------------
至于具体的安全设置和理论知道,参考SQL联机帮助
zjcxc 2006-03-16
  • 打赏
  • 举报
回复
问题2.
应该会有 dbo 吧? 如果dbo都没有, 那么说明你的权限应该是不够的.

除了在用户中设置权限外, 每个登录还可能分配服务器的角色, 就好像sa一样, 它在任何数据库中都可能不对应有用户, 但它是sysadmim的服务器角色, 所以一样拥有访问任何数据库的权限.
zjcxc 2006-03-16
  • 打赏
  • 举报
回复
1. 除几个系统数据库外, 这个用户是可以删除的.
2. 无法删除系统数据库中的该用户
3. 这个用户的作用在于, 如果你授予此用户某些权限, 则任何sql server的登录都具有这些权限. 由于系统数据库中的某些表, 例如 master.dbo.sysdatabase 要求是每个登录都能访问的, 否则无法列表实例上有那些数据库, 也无法验证选择某个数据库是否合法, 因此系统数据库中的该用户是无法先锋队的

4. 在数据库的用户中右键--新建用户--输入guest即可.

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧