【问题标题】:ZF2 and SQL server 'execute as user'ZF2 和 SQL 服务器“以用户身份执行”
【发布时间】:2014-06-08 05:54:20
【问题描述】:

目前我们正在为我们的内部应用程序运行 Zend Framework 2 和 SQL Server。我们为 AuditTrail 准备了一个存储过程。此 AuditTrail 包括进行更改/插入的 AuditUser。此时“AuditUser”是 PDO 连接的用户名。

我们正在努力改变此 AuditUser 是进行更改并希望使用EXECUTE as USER='[REALUSER]' 的活动用户。他们的奇怪行为开始了。执行此语句时,一切正常。但是当我刷新页面时,SQL server 返回以下错误:

致命错误:带有消息的未捕获异常“PDOException”
'SQLSTATE[HY000]: [Microsoft][SQL Server Native Client 11.0] SQL Server 上出现未指定的错误。连接可能已被服务器终止。'

Zend\Db\Adapter\Exception\InvalidQueryException: 语句不能 被执行(08S01233 - [Microsoft][SQL Server Native Client 11.0]共享内存提供程序:管道的另一端没有进程。

再次刷新后,再次正常执行。

我认为这与 SQL/PDO 中的会话有关(http://msdn.microsoft.com/en-us/library/ms181362.aspx,表示会话已切换)。但我无法解决这个问题。有人可以提供帮助或建议前进的方向吗?

问候,

皮姆

【问题讨论】:

    标签: php sql-server pdo zend-framework2 impersonation


    【解决方案1】:

    对于那些遇到同样问题的人 - 这个链接帮助了我: https://blogs.msdn.microsoft.com/brian_swan/2010/11/17/sql-server-driver-for-php-connection-options-connection-pooling/

    如果您像我一样使用 sqlsrv 函数,您唯一需要做的就是将 ConnectionPooling 设置为 false,如给定链接中所述:

    例如 $options = array("Database"=>"master", "UID"=>"user", "PWD"=>"password", "ConnectionPooling"=>0);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 2017-07-28
      相关资源
      最近更新 更多