您应禁用 SQL Server 在 msdb 数据库中的 guest 用户

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 2539091

概要
SQL Server 联机丛书,则建议您最好保护数据库服务器禁用 guest 用户在每个数据库。这项建议不适用于主、 msdb) 和 tempb 系统数据库。为了使某些 Microsoft SQL Server 功能工作,访客用户必须启用 msdb 数据库中。本文介绍了如果您禁用 msdb 数据库中的 guest 用户,您可能会遇到的一些问题。本文还提供了有关如何解决这些问题的信息。

有关 SQL Server 联机丛书中的此设置的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 网站:

有关限制访问 SQL Server 中的数据的信息

更多信息

当来宾用户禁用 msdb 数据库中的症状

在 msdb 数据库中禁用来宾用户时,您可能会收到错误 916当在管理 Studio 数据库节点将展开或如 OCS 服务器应用尝试连接到 SQL 服务器时可能遇到一个或多个以下故障现象,您的环境中会出现此问题。

N注意错误的文本稍有可能有所不同,具体取决于该方案。但是,基本原因是本质上是相同的。原因是没有足够的特权,在 msdb 数据库中。在对象资源管理器试图显示每个数据库的基于策略的管理状态时,将出现的前两个症状。对象资源管理器将使用当前登录的权限来获得此信息,这将导致错误 msdb 数据库中查询。

症状 1

SQL Server 2008年和 SQL Server 2008 R2 的环境中,不是 Sysadmin 固定服务器角色,在 SQL Server 中,否则不授予相应的权限,在 msdb 中的成员的用户尝试展开数据库节点,或任何在该节点下的文件夹时他们将收到类似于以下错误消息:

无法检索此请求的数据。() Microsoft.SqlServer.Manager.Sdk.Sfc

其他信息:

执行的事务处理性的 SQL 语句或批处理时发生异常。

() Microsoft.SqlServer.ConnectionInfo

服务器主体<Servername>将不能访问该数据库的当前安全上下文的"msdb"。(Microsoft SQL Server,错误: 916)</Servername>

注意展开数据库节点只是一个活动的要求对 msdbdatabase 到来宾帐户具有连接权限。要求至少最低 themsdb 数据库访问权限的任何活动会出现类似的错误消息。

症状 2

在 SQL Server 2005 中,当用户谁不是在 SQL Server 中固定服务器角色 Sysadmin 的成员,和谁否则不授予适当的权限,在 msdb 中,可以展开数据库节点。但是,当用户要查看的数据库属性时,他们会收到以下错误消息:

无法显示请求的对话框。

其他信息:
无法显示请求的对话框。() SqlMgmt
执行的事务处理性的 SQL 语句或批处理时发生异常。() Microsoft.SqlServer.ConnectionInfo
服务器主体主体名称将不能访问该数据库的当前安全上下文的"msdb"。(Microsoft SQL Server,错误: 916)

注意甚至当用户在该数据库中的 dbo 角色的成员时,将出现错误消息。

症状 3

受此问题影响的产品之一是 Microsoft Office 通信服务器 2007 (OCS 2007 年)。当您尝试启动的服务器,前端服务不会启动。此外,您将看到下面的错误消息,在事件查看器中:

事件类型: 错误
来源: OCS 用户服务
事件类别: (1006)
事件 ID: 30962
日期:日期
时间:时间
用户:N/A
计算机:计算机名
说明: 连接到后端数据库成功,但在后端执行注册存储过程失败。在正常操作条件下不应该发生该错误。与产品支持联系。
后端服务器:服务器名称数据库: rtc Sql 本机错误: 916 连接字符串: 驱动程序 = {SQL 本机客户端} ;Trusted_Connection = 否。AutoTranslate = 否 ; 服务器 =服务器名称; 数据库 = rtc ;
原因: 可能与后端数据库的问题。
解决方法:
确保后端运行正常。
有关详细信息,请参阅帮助和支持中心 http://go.microsoft.com/fwlink/events.asp.

有关详细信息,请参阅 OCS 支持论坛中的以下线程:

http://social.microsoft.com/Forums/en-US/communicationsserversetup/thread/8b428bd3-0509-4859-ac11-122bdbef06cc

如何确定的问题

若要确定 guest 用户是否在 msdb 数据库中正确配置,请运行下面的查询,以 sysadmin 固定的服务器角色的成员:

USE msdb;SELECT prins.name AS grantee_name, perms.*FROM sys.database_permissions AS permsJOIN sys.database_principals AS prinsON perms.grantee_principal_id = prins.principal_idWHERE prins.name = 'guest' AND perms.permission_name = 'CONNECT';GO

如果您收到结果集,类似于以下,来宾用户具有必要的权限。
grantee_nameclass_descmajor_idminor_idgrantee_principal_idgrantor_principal_id键入permission_name状态state_desc
来宾0数据库0021CO连接G授予

如果您收到两个空的结果集,或者如果state_desc在结果集中显示拒绝,这里提到,在 msdb 数据库中禁用来宾用户。当您连接到数据库时,您可能会收到错误 916。

如何解决问题

若要解决此问题,请运行下面的查询 SQL Server 管理 Studio 为 sysadmin 固定服务器角色的成员:

USE msdb;GRANT connect TO guest;GO


警告:本文已自动翻译

Thuộc tính

ID Bài viết: 2539091 - Xem lại Lần cuối: 06/21/2014 15:54:00 - Bản sửa đổi: 5.0

Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Express Edition

  • kbsurveynew kbexpertiseadvanced kbtshoot kbprb kbmt KB2539091 KbMtzh
Phản hồi