none
使用MSSQL Driver for PHP,执行MSSQL语句进行备份。即使备份成功了,sqlsrv_query依然返回的是FALSE RRS feed

  • 问题

  • 使用MSSQL Driver for PHP,执行MSSQL语句进行备份。即使备份成功了,sqlsrv_query依然返回的是FALSE。


    MSSQL Driver 是 3.0版

    MSSQL Native Client 是 2012版

    PHP版本是 5.4.17

    MSSQL服务器版本是2005


    这里是我的PHP脚本:

    https://gist.github.com/vibbow/6050092

    错误发生在 29-37 行,执行备份的时候。

    能帮忙看下我哪里用错了吗?

    谢谢。

    • 已编辑 vibbow 2013年7月21日 21:46
    2013年7月21日 21:40

全部回复

  • sqlsrv_query返回至:A statement resource. If the statement cannot be created and/or executed, false is returned.

    所以查一下是否直接执行SQL语句进行备份是否成功?如果执行普通的查询语句sqlsrv_query可以返回正确的结果吗?


    Please Mark As Answer if it is helpful.


    • 已编辑 KevinLiu328 2013年7月23日 8:28 修改一下
    2013年7月23日 8:26
  • 直接执行程序生成的SQL,返回以下结果:

    已为数据库 'SXLT_201203XX',文件 'graspfz_Data' (位于文件 1 上)处理了 14808 页。
    已为数据库 'SXLT_201203XX',文件 'graspfz_Log' (位于文件 1 上)处理了 1 页。
    BACKUP DATABASE 成功处理了 14809 页,花费 5.367 秒(22.603 MB/秒)。

    如果用PHP程序执行,sqlsrv_erros() 返回的错误message是:

    已为数据库 'SXLT_201203XX',文件 'graspfz_Data' (位于文件 1 上)处理了 14808 页。

    2013年7月23日 8:33
  • 实际上执行成功了吗?


    Please Mark As Answer if it is helpful.

    2013年7月23日 8:48
  • 实际上执行成功了。

    连备份文件的MD5都和手动在Manager里备份的一样。

    2013年7月23日 9:30
  • 会不会是php的问题??
    2013年7月23日 11:42
  • 感觉是PHP问题的概率不大。

    在SQL Server Management Studio里,执行完备份语句后,返回的并不是Resource (或者是table,不确定这里应该怎么描述),而是String。估计是MSSQL Driver在这里没处理好,遇到String返回后就认为是错误了。

    2013年7月23日 12:04
  • 感觉是PHP问题的概率不大。

    在SQL Server Management Studio里,执行完备份语句后,返回的并不是Resource (或者是table,不确定这里应该怎么描述),而是String。估计是MSSQL Driver在这里没处理好,遇到String返回后就认为是错误了。


    嗯 比较同意你的想法,不知道sqlsrv_query内部是如何处理的。

    Please Mark As Answer if it is helpful.

    2013年7月24日 1:25