Frage

Ich habe Probleme mit einem SQL Server 2005 installiert Verbinden von diesem sehr einfachen Ruby-App:

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

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

Die dev04 DSN verweist auf meinen odbc.ini Dateieintrag:

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

FreeTDS wird in odbcinst.ini installiert und es verweist auf diese Konfiguration in freetds.conf:

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

Das funktioniert:

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

Und so tut dies:

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$

Wenn ich ausführen, dass Ruby-Skript, aber ich diesen Fehler:

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'
...

Ich verstehe den Fehler ‚Adaptive Server-Verbindung fehlgeschlagen‘ wegen TDS-Protokoll Version Abweichungen auftreten können. Ich habe die Protokolle überprüft und sie alle scheinen die richtige Version (7.0) zu verwenden, so dass ich bei einem vollständigen Verlust, warum dies könnte passieren.

Alle Zeiger?

War es hilfreich?

Lösung

Ich bin der Sequel Betreuer. Leider habe ich keine persönliche Erfahrung Sequel mit mit FreeTDS um eine Verbindung zu MSSQL. Ich weiß, dass andere Leute es allerdings erfolgreich verwendet haben.

Ihre Fehlermeldung ein Problem in der zugrunde liegenden Rubin / ODBC-Bibliothek, nicht in Sequel selbst. Wenn Sie eine Verbindung bekommen arbeitet direkt Rubin / ODBC verwenden, sollte es nicht schwer sein, um es zu bekommen mit Sequel arbeiten.

Leider kann ich nicht mehr helfen.

Auch wenn es um Ihre aktuelle Ausgabe nicht verwendet ist, sollten Sie das: db_type => 'MSSQL' Option an den Sequel.odbc Anruf

.

Andere Tipps

Manchmal ist frei nicht ohne Kosten.

TDS Version 7.0 war korrekt für SQL Server 7.x, und es wird in vielen Fällen zu späteren Versionen von SQL Server verbinden -. Aber nicht alle Funktionen oder Funktionalität dieser späteren Versionen unterstützt

TDS Version 7.1 ist korrekt für SQL Server 2000 (v8.x); 7.2 ist korrekt für SQL Server 2005 (v9.x); 7.3 ist korrekt für SQL Server 2008 (v10.x). Aufgrund einiger Verwirrung in der Dokumentation von Microsoft, werden diese in der Regel in der freetds.conf mit der SQL Server-Version angegeben, nicht die TDS-Version; und SQL Server 2008 ist noch nicht vollständig unterstützt werden; also würde ich testen mit

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

oder ... Sie könnten versuchen, mit einem kommerziellen Treiber wie dieser von meinem Arbeitgeber , die bereits viel von dem Kopf-Kratzen behandelt. Wenn Sie diesen Weg gehen, würde ich vorschlagen, dass Sie auch die vollständige Dokumentation für den Rails-ODBC-Adapter

ObDisclaimer. Ich für Open Software arbeiten, aber nicht profitieren direkt von jedem der Auswahl unserer Produkte zu verwenden,

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top