exec — Использование PHP и вызов sqlcmd

Я ломал голову над этим, пытаясь вызвать sqlcmd в PHP (IIS / Windows), но совершенно не понимаю, почему он не работает.

Код:

 $sql = 'sqlcmd -S '.$serverName.' -d '.$databasename.' -U '.$userName.' -P '.$userPassword.' -q "exec GenerateInstallScript 123456890" -o C:\temp\sqlscripts.sql';
shell_exec($sql);

Код выполняется, но ничего не генерируется в

C: \ Temp

папка. Я попытался запустить его вручную из запуска / запуска, и он работает без каких-либо проблем. Я даже попробовал просто exec($sql), используя полный абсолютный путь к sqlcmd, попытался вызвать cmd.exe, а затем sqlcmd, но пока ничего.

Я добавил IUSR full и Users полное разрешение для папки, а также, чтобы убедиться, что это не разрешения от IIS, но все еще ничего.

Я также использовал proc mon, чтобы посмотреть, скажет ли это мне что-нибудь, и я не вижу ничего, связанного с sqlcmd, cmd или php.exe (это привело бы меня к причине, почему — появляются записи, а не только стандартные записи вызовов).

Я провел большой поиск по PHP и по вызову SQLCMD, но кажется, что большинство людей вызывает пакетный файл с sqlcmd. Я не могу сделать это здесь, поэтому любые рекомендации будут оценены!

1

Решение

Вот возможная идея, используйте пакетный скрипт, чтобы сделать работу за вас следующим образом:

sqlcmd.bat

@ECHO OFF
cd /D "C:\Program Files\Microsoft SQL Server\100\Tools\Bin\"sqlcmd -S %1 -d %2 -U %3 -P %4 -q "exec GenerateInstallScript 123456890" -o C:\temp\sqlscripts.sql

Затем вызовите этот пакетный скрипт, используя php:

test.php

<?php

$serverName = 'xyz';
$databasename = 'xyz';
$userName = 'xyz';
$userPassword = 'xyz';

shell_exec("sqlcmd.bat $serverName $databasename $userName $userPassword");

echo 'Done';

?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]