Ich habe Probleme beim Verbinden von Ruby mit Microsoft SQL Server. Ich verwende Mac OS X, aber die Zielumgebung ist Ubuntu Linux.Ruby Verbindung zu SQL Server
Hier ist, was ich versucht habe:
- unixODBC
- FreeTDS
- die Optionen installieren Installieren
--with-unixodbc=/usr/local/etc
--with-tdsver=8.0
verwendet
- die Optionen installieren Installieren
ich diese Dateien dann hatte in /usr/local/etc
:
odbc.ini
odbcinst.ini
freetds.conf
ich einen Verweis auf den FreeTDS Treiber in der odbcinst.ini
Datei auf meine ODBC-Treiber-Datei wie folgt hinzugefügt:
;
; odbcinst.ini
;
;
[FreeTDS]
Driver = /usr/local/lib/libtdsodbc.so
Dann habe ich konfiguriert der Server in der freetds.conf
-Datei wie folgt:
# Aries database server (SQL Server 2008)
[aries-db1]
host = xx.xx.xx.xx
port = 1433
tds version = 8.0
Und schließlich habe ich den ODBC-DSN in der odbc.ini
-Datei wie folgt:
[aries-db1]
Driver = FreeTDS
Description = ODBC Connection via FreeTDS
Trace = 1
Servername = aries-db1
Database = MY_DB
UID = user1
PWD = pass1
Ich kann bestätigen, dass mein Server online ist und der Port offen ist (über Telnet & yougetsignal.com Port Check).
Als Test, ich habe dies:
tsql -S aries-db1 -U user1 -P pass1
Und es schien ganz gut zu verbinden. Das Übergeben ungültiger Werte führte zu erwarteten Fehlern.
So endlich zu meiner Frage:
Wie erweitere ich das Ruby? Nichts, was ich bisher versucht habe, hat funktioniert. Ich habe versucht, Sequel wie folgt aus:
require 'sequel'
Sequel.connect('aries-db1')['select * from foo'].all
Und ich bekomme ein Fehler wie folgt aus:
Sequel::DatabaseConnectionError: ODBC::Error: S1000 (0) [unixODBC][FreeTDS][SQL Server]Unable to connect to data source
Was mich erzählt wird meine Treiberkonfiguration richtig zu finden, aber aus irgendeinem Grund keine Verbindung herstellen können.
Ich habe auch versucht DBI wie folgt aus:
DBI.connect('DBI:ODBC:aries-db1')
Und ich einen ähnlichen Fehler.
Irgendwelche Vorschläge? Ich fühle mich, als wäre ich sehr nah dran, aber ich bin mir nicht sicher, was ich als nächstes versuchen sollte, um das Problem zu beheben.
'zu verwenden, kann ich feststellen, ob mein Server Online und der Port ist offen (über Telnet & Yougetsignal.com Port Check). "Leider kann ich Ihre Frage nicht beantworten. Sie sollten jedoch wissen, dass das Offenlegen von SQL Server mit dem Internet wahrscheinlich zu einem Sicherheitsproblem führt. Verschiedene Bots scannen nach SQL Server und versuchen, sie zu verbinden/anzugreifen. –
Müssen Sie MRT verwenden? Kannst du JRuby und JDBC nicht benutzen? – Luke
@will - Vielen Dank, dass Sie darauf hingewiesen haben. Ich bin mir sehr bewusst, wie schlimm das ist, aber im Produktivsystem werde ich es durch IP-Adresse sperren und den Port ändern. Ich versuche nur zu bestätigen, dass all diese Teile zusammen funktionieren. –