seiti.eti.br

programming & gadgets


by seiti tt seiti

Para acessar o MS SQL Server através de aplicativos que não possuam os meios oficiais de acesso (protocolo TDS) devemos utilziar ou o FreeTDS ou uma conexão ODBC (Open Database Communication).
Segue como utilizar uma conexão ODBC através do módulo DBI do Perl:

Configurando o PostGreSQl para acessar fontes externas de dados:

SELECT * FROM remote_select( ‘dbi:ODBC:DRIVER=SQL Server;UID=nom_usuario;PWD=senha_usuario;WSID=nom_maquina;DATABASE=nome_BD;APP=Microsoft Data Access Components;SERVER=(local);Description=Sql Server ODBC’ , ‘nom_usuario’ , ‘senha_usuario’ , ‘{AutoCommit => 1, RaiseError => 1}’ , ‘SELECT * FROM tabela’) AS(id int4, coluna varchar, outracoluna varchar)

A consulta acima resulta numa tabela com três colunas: id, coluna e outracoluna.
Talvez seja preciso mudar o primeiro parâmetro da chamada da função, que é onde se encontra o DSN (“Data Source Name”) do ODBC. Tente criar pelo próprio Windows (estou numa estação com Windows 2003), indo na seção de configuração de Fontes de Dados ODBC, na aba Fonte de dados de arquivos (que eu acho que deveria ter sido traduzido como “arquivo de fonte de dados”, mas enfim…). Siga o “wizard” apresentado e depois abra o arquivo .dsn num editor de texto para obter a string de conexão.

Note que é preciso que os nomes das tabelas no SQL Server estejam todos em minúsculo. Se este não for o caso, tente utilizar aspas duplas nos nomes das colunas:

SELECT * FROM remote_select( ‘dbi:ODBC:DRIVER=SQL Server;UID=nom_usuario;PWD=senha_usuario;WSID=nom_maquina;DATABASE=nome_BD;APP=Microsoft Data Access Components;SERVER=(local);Description=Sql Server ODBC’ , ‘nom_usuario’ , ‘senha_usuario’ , ‘{AutoCommit => 1, RaiseError => 1}’ , ‘SELECT * FROM tabela’) AS(“Id” int4, “coluna” varchar, “outraColuna” varchar)

E é isso.