Oi,
Recentemente, tive que me conectar a um servidor MSSQL usando PHP em uma caixa Debian (o banco de dados anterior estava em MySQL e queríamos migrar para MSSQL). O seguinte é como eu fiz isso:
Etapa 1
Em sua caixa Debian / Ubuntu, você precisará instalar php5-sybase (o conector Sybase fornece as bibliotecas necessárias para se conectar ao servidor MSSQL) e o software freetds (também unixodbc) – faça isso da seguinte maneira:
debian-7$ sudo apt-get install freetds-common freetds-bin unixodbc php5-sybase
Depois de instalado, reinicie o Apache (presumo que você esteja usando o Apache como eu, se estiver usando outro servidor web – reinicie-o ou se quiser apenas para php-cli – então não há necessidade de reiniciar nada! )
debian-7$ sudo service apache2 restart
Agora você pode testar se pode se conectar ao servidor MSSQL da seguinte maneira – usando a tsql
ferramenta de linha de comando:
debian-7$ tsql -H <hostname/ip_address> -p <port> -U <username> -P <password> -D <chosen_database>
Você deve receber uma mensagem semelhante a esta:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to <chosen_database>
1> quit
Se você obtiver algo semelhante ao que vê acima – você está no mercado e as coisas estão funcionando, agora você pode configurar seu /etc/freetds/freetds.conf
arquivo e quebrar seu código.
(Observe que eu só testei isso usando a autenticação de modo misto no servidor MSSQL e, portanto, não tenho certeza se isso funcionará usando a autenticação do Windows – duvido, mas não tenho certeza – se você tentou com a autenticação do Windows , informe a todos se funciona ou não e quais alterações (se houver) você teve que fazer). Também, naturalmente, o usuário com o qual você faz login precisa ter acesso ao seu <chosen_database> – mas eu teria pensado que isso fosse bastante óbvio!
Agora, para configurar seu arquivo, abra-o no editor de sua escolha, e você verá algum conteúdo pré-preenchido, na parte inferior deste, adicione uma linha que se pareça com o que coloquei abaixo:/etc/freetds/freetds.conf
[YOUR_SERVER_FRIENDLY_NAME]
host = <hostname/ip_address>
port = <port>
tds version = 8.0
Agora você deve conseguir se conectar sem fornecer todos os nomes de host / portas e as informações sobre o servidor da seguinte maneira:
debian-7$ tsql -S <YOUR_SERVER_FRIENDLY_NAME> -U <username> -P <password> -D <chosen_database>
Isso deve fornecer uma saída semelhante à mostrada abaixo:
locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Default database being set to <chosen_database>
1> quit
Se você conseguir isso, excelente, você está pronto para conectar seu código PHP:
Para fazer isso, basta dar uma olhada no código que colei abaixo (embora o ideal seja usar algum tipo de camada ORM para facilitar sua vida) – mas para fins de ilustração, o exemplo abaixo será suficiente:
$connection = mssql_connect('<YOUR_SERVER_FRIENDLY_NAME>', '<username>', '<password>');
if (!$connection) {
die('Unable to connect!');
}
if (!mssql_select_db('<chosen_database>', $connection)) {
die('Unable to select database!');
}
$result = mssql_query('SELECT * FROM <some_table>');
while ($row = mssql_fetch_array($result)) {
var_dump($row);
}
mssql_free_result($result);
Quando você executa isso – por meio de um navegador ou linha de comando, você deve obter dados do seu <some_table>
.
Espero que isso tenha ajudado alguém, divirta-se 🙂
Atenciosamente,
Shabbir