【问题标题】:length restriction for the sql variable on sqlsrv_query?sqlsrv_query 上 sql 变量的长度限制?
【发布时间】:2015-10-14 20:51:12
【问题描述】:

sqlsrv_query 上的 sql 变量是否有任何已知的长度限制? 我有一个发送命令块的应用程序执行 SQL SERVER(插入...,插入...等)。 它在 Linux (mssql) 上运行良好,但在 Windows (sqlsrv) 上最后一条指令被忽略。 最后一条指令丢失的sql命令有4900行。

$qry_str = "";
for () {
    $qry = "INSERT INTO tbl
                (field1,
                 field2,
                 etc)
            VALUES
                ('$val1',
                 '$val2',
                 etc)";
    //echo "<pre>$qry</pre>";
    $qry_str .= "$qry;\n";
}

【问题讨论】:

  • 为了清楚起见,您问的是查询本身的长度,而不是返回的结果集,对吗?
  • 就是查询本身的长度
  • 一个4900行的命令???
  • 不确定这是否完全重复,但this 有您的答案和文档链接
  • 不是单个命令,是一组命令,如上图。我们更喜欢将它以单个字符串的形式发送到 SQL 服务器,以确保只有在任何查询都没有错误时才执行批处理。如果单独发送到 SQL 服务器,一个拼写错误的查询将被忽略,但其余的将被执行。它适用于 linux 上的 mssql,但不适用于 sqlsrv

标签: php sql-server


【解决方案1】:

sqlsrv_query 上,大于 65536 的 sql 字符串被截断为 65536 个字符。尝试使用mssql_query 或将您的查询写入文件并从 sqlcmd 工具执行。这可能会帮助你Does Microsoft sqlsrv driver for PHP has limitation on query string length?

【讨论】:

  • 据我所知 mssql_query 在 5.3+ windows 版本上不可用
  • 完全正确。所以你可以用sqlcmd来做,链接显示了如何做的例子。
  • 我只在寻找一些解决方法 php。现在,我将班级上的大型命令(GT 65536)拆分为执行代码块,而不是处理整个命令。无论如何,谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-05
  • 2015-08-15
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
相关资源
最近更新 更多