Tutorial de Configuração para Acesso ao MsSQL Server Via Servidor LAMP
Postado por xorna em August 4th, 2008 salvo em Linux, PHP, Software LivreBem, para não perder o embalo por aqui, e a pedidos de alguns colegas meus de trabalho aqui do MEC, estou estou escrevendo um mini tutorial para “fazer funcionar” utilizarmos sem problemas as funções mssql do PHP rodando em um servidor LAMP (Leia-se: Linux, Apache, Mysql, PHP (Perl ou Python)) e assim termos um acesso ilimitado aos recursos do servidor MsSQL Server.
Para tanto não precisamos de muitas armas na mão, somente algumas extensões, bibliotecas e configurações finas. Pois bem, como alguns sabe, as funções mssql utilizam o ODBC e Freetds como base para suas operações. Então vamos à instalação de pacotes =):
$ apt-get install php5-mssql freetds-dev tdsodbc unixodbc unixodbc-bin
Bem, segundo muitos materiais que encontrei por aà em inglês, garantem que o Freetds roda “fine” com o unixodbc, por isso decidi partir para esta última tentativa em busca da “felicidade” (por que ser feliz é usar mysql ou pgsql, não mssql). Então depois de instalar o freetds e o unixodbc, descobri que não se trataba apenas de instalar e deu, eu precisaria neste caso configurar algumas coisinhas, mas nada de mais. Primeiramente configurar o freetds, muito simples, só precisamos adicionar o driver padrão para conectarmos e mapear um servidor. Adicione o mapeamento ao final do arquivo /etc/freetds/freetds.conf conforme exemplo abaixo:
[MeuBanco]
host = meu.banco.dedados
port = 1433
tds version = 8.0
; A versão do tds tem um valor de acordo com o banco de dados a ser conectado, no meu caso precisei utilizar para o MsSql Server 2000 (Driver 8.0)
Abaixo vou listar todas as versões disponiveis para acesso via freetds:
* Sybase before System 10, Microsoft SQL Server 6.x: tds version = 4.2
* Sybase System 10 and above: tds version = 5.
* Microsoft SQL Server 7.0: tds version = 7.0
* Microsoft SQL Server 2000: tds version = 8.0
** Caso haja dúvida, teste com uma versão menor
Em alguns casos, parando por aqui já está tudo certo, vc tem acesso livre para conexão, mas agora estarei postando um extra, que é para garantir que seu apache/php irá autenticar diretamente no servidor mssql e você poderá acessar esse banco a partir de qualquer software linux, incluindo o OpenOffice Base. Então vamos lá para a configuração do UNIXODBC. Primeiramente você deve iniciar a edição do arquivo /etc/odbc.ini. Inserindo as seguintes configurações:
[meubd]
Description = FreeTDS
Driver = FreeTDS
Servername = meubd
Database = aaa
UID = bbb
PWD = *******
Port = 1433
E no arquivo /etc/odbcinst.ini adicione essas configurações:
[FreeTDS]
Description = Para conectar com MSSQL e Sysbase
Driver = /usr/lib/odbc/libtdsodbc.so
Driver64 = /usr/lib
Setup = /usr/lib/odbc/libtdsS.so
Setup64 = /usr/lib
UsageCount = 1
CPTimeout =
CPReuse =
Vá até o arquivo /etc/php5/apache2/php.ini e faça a seguinte modificação:
descomentem e caso for necessario modifiquem o charset da linha:
msssql.charset = "UTF-8"
Bom pessoal, acho que é somente isso, qualquer dúvida, problema ou sugestão em relação a esse passo-a-passo podem entrar em contato comigo que buscaremos a melhor solução.
Ps: Não esqueçam de reiniciar o daemon do apache!

August 26th, 2008 em 9:50 pm
Cara, tenho um problema com conexão com tds da uma mensagem:
Password:
Msg 20017, Level 9, State -1, Server OpenClient, Line -1
Unexpected EOF from the server
Msg 20002, Level 9, State -1, Server OpenClient, Line -1
Adaptive Server connection failed
There was a problem connecting to the server
Ja configurei como você descreveu.
September 11th, 2008 em 1:55 pm
buenas amigo, primeiramente me desculpe a demora em responder o tópico, mas realmente passei dias e noites em meus projetos… bom, esse erro acontece exatemente quando?