Как подключить веб-сервер QNAP к Microsoft MS SQL

Я пытаюсь настроить свой веб-сервер QNAP TS-231P для подключения к базе данных MS SQL, установленной на сервере Windows (MSSQL Express 2014).

В панели управления QNAP -> Web-сервер я добавил в файл php.ini эту строку

extension = mssql.so

и теперь, запуская phpinfo(), я вижу раздел mssql (версия библиотеки — FreeTDS).

Мое веб-приложение, построенное на CodeIgniter 3.1.9, не может подключиться к MSSQL (оно работает на XAMPP версии 3.2.2, установленной в Windows), я также попробовал этот простой php-код:

<?php
$connection = mssql_connect('10.10.10.100\SQLEXPRESS', 'sa', 'mypassword');
if (!$connection) {
  die('Unable to connect!');
}
if (!mssql_select_db('MY_DATABASE', $connection)) {
  die('Unable to select database!');
}
$result = mssql_query('SELECT * FROM MY_TABLE');
while ($row = mssql_fetch_array($result)) {
  var_dump($row);
}
mssql_free_result($result);
?>

но соединение не удается. Вопрос в том, что я могу сделать для успешного подключения?


person Davide    schedule 21.12.2018    source источник
comment
Вам действительно не следует использовать учетную запись sa для веб-службы. Я (очень) настоятельно рекомендую вам создать логин и пользователя только с теми разрешениями, которые нужны вашему веб-сайту, и подключиться, используя эту учетную запись. Иметь веб-сайт с полными sysadmin привилегиями — ужасная идея.   -  person Larnu    schedule 21.12.2018
comment
Вы правы, но я использую привилегии системного администратора только в производстве, прежде всего мне нужно получить работающее соединение.   -  person Davide    schedule 22.12.2018
comment
MS SQL Server должен иметь разрешенные удаленные подключения. Вы его установили? Как? См.: Настроить параметр конфигурации сервера удаленного доступа   -  person Maciej Los    schedule 17.01.2019


Ответы (1)


На основании информации с сайта php.net:

mssql_connect

Предупреждение

Эта функция была УДАЛЕНА в PHP 7.0.0.

Вместо этого вы должны использовать sqlsrv_connect:

Чтобы иметь возможность подключаться к MS SQL Server, этот сервер должен принимать удаленные подключения. См.: Настроить параметр конфигурации сервера удаленного доступа

Когда вы используете IP, вы должны указать номер порта, на котором MS SQL Server прослушивает удаленные соединения.

<?php
$serverName = "serverName\\sqlexpress, 1542"; //serverName\instanceName, portNumber (default is 1433)
$connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}
?>

Подробнее о подключении к MS SQL Server в этой теме: Как использовать PHP для подключения к серверу sql

Удачи!

person Maciej Los    schedule 17.01.2019