Azure. Как правильно использовать веб-работу PHP для внесения изменений в базу данных SQL?

ЦЕЛЬ: Использование веб-задания PHP для подключения и изменения таблицы базы данных SQL в Azure.

Я пытаюсь загрузить .zip файл, содержащий .php и .json файл настроек веб-заданий внутри службы приложений, работающей на Azure.

Я считаю, что что-то не так с тем, как я кодирую соединение PDO-SQL внутри файла PHP, когда я загружаю веб-работу как .zip в веб-задания, статус всегда «Ожидание перезапуска».

Вот что у меня в моем .php файл:

<?php

$conn = new PDO ( "sqlsrv:server = mydb.database.windows.net,1433; Database = myappservices");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
catch ( PDOException $e ) {
print( "Error connecting to SQL Server." );
}
$connectionInfo = array("Database" => "myappservices");
$serverName = "mydb.database.windows.net,1433";
$conn = sqlsrv_connect($serverName, $connectionInfo);

if ($conn) {
$stf = $conn->prepare("INSERT INTO MyTable
VALUES ('boom', 1, 2);");
$stf->execute();
}

?>

Тогда мой .json Файл просто планировщик:

{
"schedule": "0 */5 * * * *"}

Это только два файла в моем .zip файл, который я загружаю.

Чтобы объяснить код PHP, я пытаюсь подключиться через проверку подлинности Windows (нет необходимости для пользователя / прохода). Может быть, я тоже делаю это неправильно.

У кого-нибудь есть способы сделать это? Я был бы очень признателен, если бы давал пошаговые инструкции или предложения о том, как изменить мой код, чтобы этот веб-джоб фактически работал.

0

Решение

Учти это job.php:

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

try {
// DON'T HARDCODE CREDENTIALS, pull from Application Settings.
// In Azure App Service, Application Settings are exposed as
// environment variables.
//
// i.e. $db_user = getenv("DB_USER");
//
$conn = new PDO ("sqlsrv:server = poqfsXXXX.database.windows.net,1433;
Database = MobileApp_db",
"Username", "P@ssw0rd");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
print("Error connecting to SQL Server: " + $e);
}

$stmt = $conn->prepare("select * from todoitems");
$stmt->execute();
while ($row = $stmt->fetch()) {
print_r($row);
}

unset($conn);
unset($stmt);

?>

Ожидаемый результат:
(Вы можете проверить в Куду: https: // {имя_сайта} .scm.azurewebsites.net / DebugConsole)

d:\home\site\tests> "d:\program files (x86)\php\v5.6\php.exe" job.php

Array
(
[Id] => d4657cff-09a2-4a8a-b1d2-462c2c42a9f0
[0] => d4657cff-09a2-4a8a-b1d2-462c2c42a9f0
[Text] => From Azure SQL
[1] => From Azure SQL
[Complete] => 0
[2] => 0
[Version] => 0000000000001825
[3] => 0000000000001825
[CreatedAt] => 2016-06-17 10:11:17.1167267 +00:00
[4] => 2016-06-17 10:11:17.1167267 +00:00
[UpdatedAt] => 2016-06-17 10:11:17.1167267 +00:00
[5] => 2016-06-17 10:11:17.1167267 +00:00
[Deleted] => 0
[6] => 0
)
Array
(
...
)
...

Чтобы объяснить код PHP, я пытаюсь подключиться через проверку подлинности Windows (нет необходимости для пользователя / прохода). Может быть, я тоже делаю это неправильно.

В то время как Azure SQL поддерживает проверку подлинности Windows, я не совсем уверен, что вы подразумеваете под «нет необходимости для пользователя / прохода». Проверка подлинности Windows означает «примите учетные данные того, с кем работает этот процесс, и попытайтесь выполнить аутентификацию на сервере SQL». Поскольку вы запускаете Webjob как случайный пользователь, предоставляемый песочницей, проверка подлинности Windows не имеет особого смысла.

Из Обозревателя процессов Куду:

Process Explorer

Вот один допустимый сценарий для проверки подлинности Windows с Azure SQL:

У вас есть предварительно размещенное приложение, которое использует Active Directory для аутентификации на вашем предварительном SQL Server. У вас есть требование перейти на Azure SQL. У вас нет возможности изменить метод аутентификации для SQL. Так что вы DirSync своего каталога в Azure AD и используйте проверку подлинности Windows для подключения к Azure SQL.

Подробнее об аутентификации Windows в Azure SQL:
https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/

2

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

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

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