Pergunta

Estou tendo problemas para se conectar a um SQL Server 2005 instalar a partir deste muito simples aplicativo Ruby:

#!/usr/bin/env ruby
require 'rubygems'
require 'sequel'

Sequel.odbc('dev04')['select top 1 * from users'].all

Os dev04 DSN aponta para a minha entrada arquivo odbc.ini:

[dev04]
Driver      = FreeTDS
Description = ODBC connection via FreeTDS
Trace       = 1
Servername  = dev04
Database    = Dev04
UID         = uDev04
PWD         = pwdDev04

FreeTDS está instalado no odbcinst.ini e aponta para esta configuração no freetds.conf:

[dev04]
host = hm602.mycompany.com
port = 1433
tds version = 7.0

Isso funciona:

carlos$ tsql -S dev04 -U uDev04 -P pwdDev04
locale is "en_GB.UTF-8"
locale charset is "UTF-8"
1> exit
carlos$

E o mesmo acontece com esta:

carlos$ iodbctest "DSN=dev04;UID=uDev04;PWD=pwdDev04"
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0406.1211
Driver: 0.82 (libtdsodbc.so)

SQL>exit 

Have a nice day.
carlos$

Quando eu executo que Ruby roteiro, porém, eu recebo este erro:

carlos$ ruby mssql.rb 
/Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `initialize': ODBC::Error 01000 (20002) [FreeTDS][SQL Server]Adaptive Server connection failed (Sequel::DatabaseConnectionError)
    from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `connect'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/adapters/odbc.rb:37:in `connect'
    from /Library/Ruby/Gems/1.8/gems/sequel-3.4.0/lib/sequel/database.rb:92:in `initialize'
...

Eu entendo a 'conexão Adaptive Server falhou' erro pode ocorrer devido a versão discrepâncias protocolo TDS. Eu verifiquei os logs e todos eles parecem estar usando a versão correta (7,0), então eu estou em uma perda completa a respeito de porque isso poderia estar acontecendo.

Os ponteiros?

Foi útil?

Solução

Eu sou o mantenedor Sequel. Infelizmente, eu não tenho nenhuma experiência pessoal usando Sequel para se conectar ao MSSQL usando FreeTDS. Eu sei que outras pessoas têm usado com sucesso no entanto.

A sua mensagem de erro indica um problema na biblioteca / ODBC Rubi subjacente, e não em si mesmo Sequel. Se você pode obter uma conexão trabalhando usando Ruby / ODBC diretamente, ele não deve ser difícil de fazê-lo funcionar com o Sequel.

Desculpe eu não posso ser de mais ajuda.

Além disso, enquanto ele não está relacionado com o problema atual, você deve usar o:. Db_type => 'mssql' opção para a chamada Sequel.odbc

Outras dicas

Às vezes, livre não é sem custo.

TDS Versão 7.0 foi correto para 7.x do SQL Server, e ele irá se conectar em muitos casos para versões posteriores do SQL Server -. Mas ele não suporta todos os recursos ou funcionalidade dessas versões posteriores

TDS Versão 7.1 está correto para o SQL Server 2000 (v8.x); 7.2 está correto para o SQL Server 2005 (v9.x); 7.3 está correto para o SQL Server 2008 (v10.x). Devido a alguma confusão na documentação da Microsoft, estes são geralmente especificado no freetds.conf usando a versão SQL Server, não a versão TDS; e SQL Server 2008 não é totalmente suportado ainda; então eu testar com

tds version = 7.1
tds version = 7.2
tds version = 8.0
tds version = 9.0

Ou ... você pode tentar usar um driver comercial como este do meu empregador que já tenha tratado muito da cabeça-arranhão. Se você fizer ir por esse caminho, eu sugiro que você também rever a documentação completa para o ODBC adaptador Rails

ObDisclaimer:. Eu trabalho para OpenLink Software, mas não se beneficiam diretamente de quem escolher para usar nossos produtos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top