首页 > 解决方案 > 执行命令在 sql server 中不起作用

问题描述

我正在研究数据库迁移。我编写了一个代码来执行从数据库中检索数据并推送到 csv 文件中的命令。这工作正常,MySQL但是当我尝试做同样的事情时SQL Server它不起作用。事实上,当我将相同的命令复制粘贴到命令提示符时,它工作正常。我仔细检查了一切。我不明白为什么它不起作用。它返回空白输出。我已经尝试过之前提供的许多解决方案。没有工作。对此的任何帮助将不胜感激。

这是我正在使用的代码:

//$sqlsrv is used to determine the database server type
  $str_query = voc_get_query_string($query);
  $output_uri = 'temporary://' . user_password();
  $file_path = drupal_realpath($output_uri . '.csv');
  if($sqlsrv){
    $exec_path = drupal_realpath('private://Binn\sqlcmd');
  }else{
    $exec_path = drupal_realpath('private://mysql');
  }
  $sql_uri = 'temporary://' . user_password();
  $sql_path = drupal_realpath($sql_uri);  
  $fp = fopen($sql_path, 'w');
  fputs($fp, $str_query);
  fclose($fp);
  global $databases;
  if ($sqlsrv) {
    $cmd = ($exec_path .
        ' -S ' . $databases['default']['default']['host'] .
        ' -d ' . $databases['default']['default']['database'] .
        ' -U ' . $databases['default']['default']['username'] .
        ' -P ' . $databases['default']['default']['password'] .
        ' -i ' . $sql_path . '>>'. $file_path .
        ' -s '. '"," -W -m10 -r1');
  }
  else {
    $cmd = ($exec_path . ' ' . $databases['default']['default'] 
        ['database'] .
        ' -h ' . $databases['default']['default']['host'] .
        ' -u ' . $databases['default']['default']['username'] .
        ' -p ' . $databases['default']['default']['password'] . ' < ' 
        . $sql_path .
        ' > ' . $file_path);
  }

  exec($cmd);
  watchdog('cmd', var_export($cmd, TRUE));

标签: phpsql-serverdrupal-7

解决方案


推荐阅读