2016-12-14 10 views
0

У меня есть сервер Debian для запуска моего проекта CodeIgniter. Я использую MySQL как мою базу данных.Подключить внешний SQL Server (MSSQL) от linux в Codeigniter

Теперь мне нужно подключиться к внешней базе данных. Но это не сервер MySQL, это SQL Server.

Я попытался это:

$db['external']['hostname'] = 'tcp:[nameserver],[port]'; 
$db['external']['username'] = '[username]'; 
$db['external']['password'] = '[password]'; 
$db['external']['database'] = '[dataBaseName]'; 
$db['external']['dbdriver'] = 'mssql'; 
$db['external']['dbprefix'] = ''; 
$db['external']['pconnect'] = FALSE; 
$db['external']['db_debug'] = TRUE; 
$db['external']['cache_on'] = FALSE; 
$db['external']['cachedir'] = ''; 
$db['external']['char_set'] = 'utf8'; 
$db['external']['dbcollat'] = 'utf8_general_ci'; 
$db['external']['swap_pre'] = ''; 
$db['external']['autoinit'] = TRUE; 
$db['external']['stricton'] = FALSE; 

И мой тестовый файл состоит в следующем:

$DB2 = $this->load->database('external', TRUE); 
$rs = $DB2->query("SELECT * FROM table"); 
$ret = $rs->result_array(); 
var_dump($ret); 

Когда я выполнить тест файла вывод:

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

Когда я использую $db['external']['dbdriver'] = 'sqlsrv' выход

Fatal error: Call to undefined function sqlsrv_connect()

Как я могу решить эту проблему?

+0

У меня такие же проблемы, и я хотел бы найти способ сделать это. Я уже могу подключиться к mssql с той же машины, используя Adminer, поэтому проблема заключается в том, чтобы выяснить, как это сделать в Codeigniter. – marquito

+0

Я не получаю те же ошибки, что и вы. По-видимому, я могу подключиться к базе данных, но запросы возвращаются пустыми, так как я не получаю ошибку «Не удалось подключиться ...». Удиви меня. – marquito

ответ

-1

Попробуйте этот запрос $ rs = $ this-> DB2-> ("SELECT * FROM table");

+0

Это, похоже, не отвечает на вопрос. Теперь, когда вы заработали 50 очков репутации, вы можете (и должны) использовать комментарии, чтобы попросить разъяснения. Секция ответа должна использоваться только для предоставления ответов. – Chris

0

От the documentation:

The SQLSRV extension can be used on the following operating systems:

  • Windows Vista Service Pack 2 or later
  • Windows Server 2008 Service Pack 2 or later
  • Windows Server 2008 R2
  • Windows 7

Ваш сервер Debian не будет иметь возможность использовать sqlsrv_ функции.

Если вам нужно подключиться к SQL Server с Linux, вы можете использовать the PDO_DBLIB library. В CodeIgniter это выглядит, как вам нужно set the DSN manually:

Some database drivers (such as PDO, PostgreSQL, Oracle, ODBC) might require a full DSN string to be provided. If that is the case, you should use the ‘dsn’ configuration setting, as if you’re using the driver’s underlying native PHP extension

Вы должны будете использовать PDO_DBLIB DSN в строке подключения, которая может начинаться с sybase:, mssql: или dblib: (в зависимости от того, как был составлен PHP). Похоже, пакеты Debian могут use the sybase: prefix.