Форум » [x]Harbour » Помогите разобраться с MSSQL » Ответить

Помогите разобраться с MSSQL

dimao: есть необходимость цепляться к удаленной MSSQL базе. Пытаюсь делать так: #include "simpleio.ch" #include "hbrddsql.ch" REQUEST SDDODBC, SQLMIX PROC main() RDDSETDEFAULT( "SQLMIX" ) SET( _SET_DATEFORMAT, "yyyy-mm-dd" ) ? "Connect:", RDDINFO( RDDI_CONNECT, { "ODBC", "Driver={SQL Server};Server=10.10.0.1:1433;database=DB1;uid=WH1;pwd=WH1;" }) INKEY( 0 ) RETURN Выдает 0 - не конектится! причем через LibraOffice Base с JDBC с моей машины коннект идет. ЧДНТ?

Ответов - 11

AlexMyr: Когда-то подключался к msde через ado LOCAL oRs := TOleAuto():New( "ADODB.Recordset" ) LOCAL c1 := "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=NextAccess;Data Source=STOP" oRs:Open( "SELECT colDepartmentName FROM tblTreeOrganization ORDER BY colDepartmentName",c1) и т.д.

dimao: "и т.д." это для умных. мне бы примерчик рабочий, чтобы просто показал, что коннект есть. Дальше я уж сам попробую

AlexMyr: Вот рабочий пример: #include "dbinfo.ch" #include "simpleio.ch" #include "hbrddsql.ch" REQUEST SQLMIX, SDDODBC PROC main() REQUEST HB_CODEPAGE_UA866 HB_CDPSELECT( "UA866" ) clField := "Select CONVERT(VARCHAR,r.colRegistrationTime,121) as RegistrationTime,"+; "e.colSurname,"+; "e.colName,"+; "e.colMiddleName,"+; "e.colTabNumber,"+; "o.colDepartmentName,"+; "p.colPointName,"+; "CASE WHEN r.colDirection = 1 THEN 'вхiд' "+; " WHEN r.colDirection = 2 THEN 'вихiд' "+; " WHEN r.colDirection = 0 THEN '0' "+; "END as rstatus,"+; "s.colName as status1,"+; "case when r.colStatusNumber = 0 then '0' "+; " when r.colStatusNumber = 5 then '5' "+; " when r.colStatusNumber = 1 then '1' "+; " when r.colStatusNumber = 3 then '3' "+; " when r.colStatusNumber = 28 then '28' "+; " when r.colStatusNumber = 34 then '34' "+; "end as status2" clFrom := " FROM tblAllRegistrations r,"+; " tblEmployees e,"+; " tblTreeOrganization o,"+; " tblControlPoints p,"+; " tblRegStatuses s" clWhere := " WHERE r.colCardNumber=e.colCardNumber AND"+; " e.colDepartment = o.colNodeNo AND"+; " r.colPointNumber = p.colPointNumber AND"+; " r.colStatusNumber = s.colStatusNumber" st1 := clField + clFrom + clWhere rddSetDefault( "SQLMIX" ) SET( _SET_DATEFORMAT, "yyyy-mm-dd" ) nConnection := RDDINFO( RDDI_CONNECT, { "ODBC", "Server=192.168.x.x;Driver={SQL Server};dsn=MQIS;Uid=sa;database=NextAccess;pwd=" }, 'SQLMIX' ) IF nConnection == 0 ? "Unable connect to server", RDDINFO( RDDI_ERRORNO ), RDDINFO( RDDI_ERROR ) RETURN else ?"nConnection := " ,nConnection ENDIF ? "Use:", dbUseArea( .T. , , st1, "test" ) ? "Alias:", Alias() ? test->(reccount()) ? test->colSurname,test->colName Inkey( 0 ) RETURN Результат: C:\dev\_svn\harbour\contrib\sddodbc\>sq2.exe nConnection := 1 Use: .T. Alias: TEST 1 ??????? ?????


dimao: Нужно ли устанавливать какой-то сторонний драйвер ODBC на UBUNTU? Я получаю сообщение "IM002 [unixODBC][Driver Manager]Data source name not found, and no default driver specified" Может ODBC на локальной машине надо настроить?

AlexMyr: dimao пишет: Может ODBC на локальной машине надо настроить? Я тестил на винде, и в администраторе источников odbc создал пользовательский dsn с именем MQIS вот AlexMyr пишет: dsn=MQIS

dimao: ,короче, тестирую на Убунте. Установил ODBC, FreeTDS. cat /etc/odbc.ini [wts7] Driver = MSSQL Description = ODBC connection via FreeTDS Trace = No Servername = wts7 Database = PRD1 cat /etc/odbcinst.ini [MSSQL] Description = Driver = /usr/lib/odbc/libtdsodbc.so Driver64 = Setup = /usr/lib/odbc/libtdsS.so Setup64 = UsageCount = 1 CPTimeout = CPReuse = cat /etc/freetds/freetds.ini [wts7] host = 192.168.X.X port = 1433 tds version = 7.0 cat ~/odbc-test.prg #include "dbinfo.ch" #include "simpleio.ch" #include "hbrddsql.ch" REQUEST SQLMIX, SDDODBC PROC main() rddSetDefault( "SQLMIX" ) SET( _SET_DATEFORMAT, "yyyy-mm-dd" ) nConnection := RDDINFO( RDDI_CONNECT,{"ODBC","Server=192.168.x.x;Driver={FreeTDS};dsn=wts7;Uid=sa;database=PRD1;pwd=sql" },'SQLMIX') IF nConnection == 0 ? "Unable connect to server:", RDDINFO( RDDI_ERRORNO ),":", RDDINFO( RDDI_ERROR ) RETURN else ?"nConnection := " ,nConnection ENDIF RETURN причем sqsh -S wts7 -U sa -P sql работает, то есть не выдает ошибки! Может, кто посоветует, что делать ? ЗЫ : Driver={FreeTDS} и Driver={SQL Server} - пробовал. результат один! (инструкция нашел тут http://lambie.org/2008/02/28/connecting-to-an-mssql-database-from-ruby-on-ubuntu/)

AlexMyr: dimao пишет: ЗЫ : Driver={FreeTDS} и Driver={SQL Server} - пробовал. результат один! а если так Driver={MSSQL}

dimao: То же самое. пробовал так: nConnection := RDDINFO( RDDI_CONNECT,{"ODBC","Driver={MSSQL};dsn=wts7;Uid=sa;database=PRD1;pwd=sql" },'SQLMIX') тоже не пашет. чего-то еще я не знаю ;-(

AlexMyr: Может сдесь что-то есть http://ubuntuforums.org/showthread.php?t=1098688

dimao: Не. видно не судьба. тесты настроек через isql и sqsh работают. доступ к БД есть. По всему видно, проблема в описании подключения из Харбора.

dimao: ok, Попытаю счастья на harbour-users листе. Может Массимо что-то подскажет. Если получится - сообщу.



полная версия страницы