سؤال

وأواجه مشكلة في الاتصال إلى ملقم SQL 2005 تثبيت من هذا التطبيق روبي بسيط جدا:

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

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

والنقاط DSN dev04 لمشاركتي ملف odbc.ini:

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

ويتم تثبيت FreeTDS في odbcinst.ini ويشير إلى هذا التكوين في freetds.conf:

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

وهذا يعمل:

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

وهكذا يفعل هذا:

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$

وعند تشغيل هذا البرنامج النصي روبي، على الرغم من أن أحصل على هذا الخطأ:

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

وأنا أفهم 'فشل اتصال ملقم التكيفي "الخطأ يمكن أن تحدث بسبب TDS التناقضات إصدار بروتوكول. لقد راجعت سجلات وأنهم جميعا يبدو أن استخدام الإصدار الصحيح (7.0)، لذلك أنا في حيرة كاملة لماذا هذا يمكن أن يحدث.

وأي مؤشرات؟

هل كانت مفيدة؟

المحلول

وأنا معيل التكملة. لسوء الحظ، ليس لدي أي تجربة شخصية باستخدام تكملة للاتصال MSSQL باستخدام FreeTDS. وأنا أعلم الناس الآخرين قد استخدمت ذلك على الرغم بنجاح.

ورسالة الخطأ لديك يشير إلى وجود مشكلة في مكتبة روبي / ODBC الأساسية، وليس في تكملة نفسها. إذا كان يمكنك الحصول على اتصال العمل باستخدام روبي / ODBC مباشرة، فإنه لا ينبغي أن يكون من الصعب الحصول على عمل مع التكملة.

وآسف لأنني لا يمكن أن يكون مزيد من المساعدة.

وأيضا، في حين أنها ليست لها علاقة العدد الحالي الخاص بك، يجب عليك استخدام: db_type => الخيار 'MSSQL' لدعوة Sequel.odbc

.

نصائح أخرى

في بعض الأحيان، مجانا لا يخلو من التكلفة.

وTDS الإصدار 7.0 والصحيحة ل7.X SQL Server و أنها سوف تواصل في كثير من الحالات إلى إصدارات أحدث من SQL Server - لكنها لا تدعم كافة الميزات أو وظيفة من تلك الإصدارات الأحدث

وTDS النسخة 7.1 هو الصحيح ل SQL Server 2000 (v8.x)؛ 7.2 الصحيح ل SQL Server 2005 (v9.x)؛ 7.3 الصحيح ل SQL Server 2008 (v10.x). بسبب بعض الارتباك في وثائق مايكروسوفت، وهذه هي عادة المحدد في freetds.conf باستخدام إصدار SQL Server و ليس النسخة TDS. و SQL Server 2008 غير معتمدة بشكل كامل بعد. لذلك أود أن اختبار مع

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

وأو ... هل يمكن أن حاول استخدام قيادة تجارية مثل هذا واحد من بلدي صاحب العمل التي عالجت بالفعل الكثير من الرأس للخدش. إذا كنت تفعل السير في هذا الطريق، كنت أقترح عليك أيضا مراجعة وثائق كاملة لمحول ODBC القضبان

وObDisclaimer: أعمل لOpenLink البرمجيات، ولكن لا يستفيدون مباشرة من أي شخص اختيار لاستخدام منتجاتنا

scroll top