【问题标题】:MS SQL Server - Database Sysobject table missing permissions?MS SQL Server - 数据库 Sysobject 表缺少权限?
【发布时间】:2014-03-12 17:39:22
【问题描述】:

我正在尝试解决一个正在燃烧的问题,我花了最后一天没有成功。 我有一台运行 SQL Server 2008 的数据库服务器、一个数据库和一个存储过程。

存储过程逻辑包含以下语句:

IF EXISTS
(
 SELECT * 
 FROM dbo.sysobjects 
 WHERE id = OBJECT_ID( '<StoredProcedureNameHere>' ) 
 AND OBJECTPROPERTY( id, N'IsProcedure' ) = 1
)
BEGIN
   -- Do something here
END

现在,问题:

如果我从 Management Studio 脚本运行查询以执行正在调查的存储过程,它会正常工作并执行“-- 在此处执行操作”逻辑。 但是,从 Web 服务调用的完全相同的存储过程不起作用。 我禁用测试整个 IF EXISTS(---) 块并且检索到的信息是正确的。

我的初步结论是应该有任何权限设置(我显然不知道)为我的用户帐户在数据库(因此在 sysobject 表上)配置,使我能够成功获取不是代替的信息Web 服务用于访问数据库的用户帐户。

任何人都知道我应该验证任何标准设置以使其正常工作吗?

提示 - 数据库和 Web 服务组件都运行良好。在数据库服务器崩溃并且运营团队需要重建数据库服务器之后,所有此类问题都开始出现。在询问数据库的状态时,他们说他们能够备份数据库,并且必须在构建新服务器后立即恢复正常工作。

任何帮助将不胜感激。

谢谢,

【问题讨论】:

  • 你真的检查了 thw webservice 使用的帐户的权限吗?
  • 这有点奇怪...我认为storedprocs在他们自己的权限下运行(SQLAgent?),因此无论哪个帐户执行它都应该执行相同的操作。我唯一的想法是指定完整的表名 server.msdb.dbo.sysobjects - 我将不得不关注这个问题,很好奇这里的答案是什么
  • 1) Web 服务可以在 web.config 中指定一个连接字符串 - 或者如果不是,该连接字符串应该在应用程序的某处。 2)如果连接字符串中未指定用户名/密码(SSPI),则它使用运行 Web 服务的 Windows 用户进行连接,在这种情况下,您需要查看 IIS
  • Stored Procs 将在登录用户的 id 下运行。它可能是。 1) web 服务:web.config 中的连接字符串 - 或者如果不是,连接字符串应该在应用程序的某处。 2)如果连接字符串中未指定用户/密码(SSPI),则它使用运行 Web 服务的 Windows 用户进行连接,如果是这样,您需要查看 IIS,并找出运行应用程序池的用户.这可能会变得混乱,因为新版本的 IIS 使用应用程序池身份 - 这些身份不会显示为真实用户,但仍然可以在数据库中授予他们权限。

标签: sql sql-server web-services database-permissions sysobjects


【解决方案1】:

幸运的是,在运营团队发现 Web 服务使用的域帐户的配置不正确后,该问题得到了解决。几天来寻找一些不应该成为问题的东西,如果 Config wiki 页面将逐步跟进(当没有文档时每个人都会抱怨,但当它可用时根本没有被使用)。

无论如何,如果您遇到同样的问题,请确保检查用户信息是否有足够的权限来执行存储过程。

希望这对其他人有所帮助。

谢谢,

【讨论】:

    猜你喜欢
    • 2021-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2022-01-04
    • 2010-10-25
    • 1970-01-01
    • 2013-09-14
    • 2017-03-29
    相关资源
    最近更新 更多