【问题标题】:The server principal is not able to access the database under the current security context服务器主体无法在当前安全上下文下访问数据库
【发布时间】:2013-06-19 06:54:48
【问题描述】:

这似乎是一个相当普遍的问题,但查看其他相关线程的帮助和解决方案对我没有帮助。

我在这里使用 PHP 代码块 (http://pastebin.com/xSJYyC3y) 来尝试连接和查询 SQL Server 数据库。连接似乎有效,但在进行查询时,我收到以下错误消息:

[Microsoft][SQL Server Native Client 11.0][SQL Server]The server principal "my_username" is not able to access the database "database_name" under the current security context.

我只在通过 PHP 连接到服务器时出现此错误,如果我通过 MS SQL Management Studio 手动执行此操作,则一切正常。

我使用的是 Windows 7 x64、SQL Server 2008 SP1 x64 和 PHP 5.4。

感谢您查看我的问题!

【问题讨论】:

    标签: php sql-server


    【解决方案1】:

    如果您可以通过 SSMS 运行查询,但通过 PHP 遇到安全问题,那么您很可能遇到了错误模拟问题。

    通常,您会遇到两个不同的安全问题:

    • SQL Server 的内部安全性 - 如果您使用 SQL Server 帐户登录到服务器,并且能够使用与 PHP 相同的帐户在 SSMS 中运行查询,则 SQL Server 安全性应该没问题。如果您不能使用相同的帐户,请开始检查服务器上的角色和安全性,暂时放宽 PHP 使用的帐户的安全性。
    • Windows 安全:如果未正确配置来自 PHP 的连接,您可能会看到模拟问题。可以通过 Brian Swans 的回答 here 找到我所见过的最彻底的解释。

    请注意,如果您的查询涉及多个数据库,或者特别是如果它包含明确涉及文件系统的内容(可能在共享文件夹上),您需要检查所有服务器和所有正在运行的文件夹的权限。

    另外,如果您正在执行存储过程,请确保您没有遇到 EXECUTE AS OWNER 的问题。这方面的一个例子可以看到here

    如果这没有帮助,您仍然可以查看 Windows 机器上数据库文件的安全性,并尝试 - 暂时 - 放松文件夹的安全性,看看是否有任何改变。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 2018-03-29
      相关资源
      最近更新 更多