Меню

Ошибка odbc sqlstate 08004

Categories

  • 385.5K All Categories
  • 5.1K Data
  • 2.5K Big Data Appliance
  • 2.5K Data Science
  • 453.4K Databases
  • 223.2K General Database Discussions
  • 3.8K Java and JavaScript in the Database
  • 47 Multilingual Engine
  • 606 MySQL Community Space
  • 486 NoSQL Database
  • 7.9K Oracle Database Express Edition (XE)
  • 3.2K ORDS, SODA & JSON in the Database
  • 585 SQLcl
  • 4K SQL Developer Data Modeler
  • 188K SQL & PL/SQL
  • 21.5K SQL Developer
  • 46 Data Integration
  • 46 GoldenGate
  • 298.4K Development
  • 4 Application Development
  • 20 Developer Projects
  • 166 Programming Languages
  • 295K Development Tools
  • 150 DevOps
  • 3.1K QA/Testing
  • 646.7K Java
  • 37 Java Learning Subscription
  • 37.1K Database Connectivity
  • 201 Java Community Process
  • 108 Java 25
  • 8.1K Embedded Technologies
  • 22.2K Java APIs
  • 138.3K Java Development Tools
  • 165.4K Java EE (Java Enterprise Edition)
  • 22 Java Essentials
  • 176 Java 8 Questions
  • 86K Java Programming
  • 82 Java Puzzle Ball
  • 65.1K New To Java
  • 1.7K Training / Learning / Certification
  • 13.8K Java HotSpot Virtual Machine
  • 94.3K Java SE
  • 13.8K Java Security
  • 208 Java User Groups
  • 25 JavaScript — Nashorn
  • Programs
  • 667 LiveLabs
  • 41 Workshops
  • 10.3K Software
  • 6.7K Berkeley DB Family
  • 3.6K JHeadstart
  • 6K Other Languages
  • 2.3K Chinese
  • 207 Deutsche Oracle Community
  • 1.1K Español
  • 1.9K Japanese
  • 474 Portuguese

773278


773278


Member Posts: 588 Green Ribbon

hi all

i am using

windows xp.
Client 11g R2
-----------------------
Oracle Linux
Database 11g R2

i am able to connect to Database using SQLPLUS but when i try to use «ORACLE ODBC Driver Configuration»
and try to test connection then i am getting the following error.

unable to connect SQLState=08004 Oracle ODBC ORA-12154:TNS..

plz suggest thanks in advance.

Answers

  • sb92075


    sb92075


    Member Posts: 42,196 Blue Diamond

    nisha wrote:
    hi all

    i am using

    windows xp.
    Client 11g R2
    -----------------------
    Oracle Linux
    Database 11g R2

    i am able to connect to Database using SQLPLUS but when i try to use «ORACLE ODBC Driver Configuration»
    and try to test connection then i am getting the following error.

    unable to connect SQLState=08004 Oracle ODBC ORA-12154:TNS..

    plz suggest thanks in advance.

    ORA-12154 ALWAYS only occurs on SQL Client & no SQL*Net packets ever leave client system
    ORA-12154 occurs when client requests a connection to some DB server system using some connection string.
    The lookup operation fails because the name provided can NOT be resolved to any remote DB.
    The analogous operation would be when you wanted to call somebody, but could not find their name in any phonebook.
    The most frequent cause for the ORA-12154 error is when the connection alias can not be found in tnsnames.ora.
    The lookup operation of the alias can be impacted by the contents of the sqlnet.ora file; specifically DOMAIN entry.
    TROUBLESHOOTING GUIDE: ORA-12154 & TNS-12154 TNS:could not resolve service name [ID 114085.1]
    http://edstevensdba.wordpress.com/2011/02/26/ora-12154tns-03505/

    sb92075

  • Mark D Powell

    In other words did you configurethe client tnsnames.ora file? Does tnsping work?

    HTH— Mark D Powell —

  • EdStevens

    nisha wrote:
    hi all

    i am using

    windows xp.
    Client 11g R2
    -----------------------
    Oracle Linux
    Database 11g R2

    i am able to connect to Database using SQLPLUS but when i try to use «ORACLE ODBC Driver Configuration»
    and try to test connection then i am getting the following error.

    unable to connect SQLState=08004 Oracle ODBC ORA-12154:TNS..

    plz suggest thanks in advance.

    If you can connect with sqlplus, then your basic tns config is correct. Problem has to be in your configuration of the ODBC DNS you defined for the connection. Please describe the DNS in as much detail as possible.
    What ODBC driver did yo specify?
    What are the names and values of all the fields you specify in the DNS for this connection?

  • 773278


    773278


    Member Posts: 588 Green Ribbon

    hi

    thanks for reply.

    System DSN is something like this in ODBC Data Source Administrator.

    Name=DBQ         Driver= Oracle in OraClient11g_home1
    
    how to use the above DSN for connectivity?

    maybe i am wrong if i am wrong plz correct me and if possible plz
    i am using the following code which is working fine for text fields instead of blob.
    and if anyone knows regarding image that how to store in database using ASP code so plz
    help me thanks..
    here is table structure and ASP code.

    Roll number
    Name varchar2(20)
    Subject varchar2(20)
    Marks number
    Attach Blob
    <%
    Dim conn,recset 
     
     
     
    set conn=server.CreateObject("ADODB.connection")
    set recset=server.CreateObject("ADODB.recordset")
    'set conn=Server.CreateObject("ADODB.Connection")
     conn.Provider="MSDAORA;Data Source=orcl;User ID=XXXX;Password=XXX"
     
     
    conn.Open(conn) 
     
    Dim r,n,s,m,att
     
    r=upload.Form("roll")
    n=upload.Form("nam")
    s=upload.Form("sub")
    m=upload.Form("mark")
    att=upload.Form("FILE1")
     
    Response.Write "Succssfully Inserted"
    conn.execute "insert into table1 values('"&r&"','"&n&"','"&s&"','"&m&"','"&file1&"')"
    conn.close
     
    %>

  • EdStevens

    nisha wrote:
    hi

    thanks for reply.

    System DSN is something like this in ODBC Data Source Administrator.

    Name=DBQ         Driver= Oracle in OraClient11g_home1

    That’s not all of it. What do you have for ‘TNS Service Name»?

    how to use the above DSN for connectivity?
    {code}

    You reference the dsn name in your odbc enabled connection.

    maybe i am wrong if i am wrong plz correct me and if possible plz
    i am using the following code which is working fine for text fields instead of blob.

    That’s not the problem you reported when you opened this thread.

    and if anyone knows regarding image that how to store in database using ASP code so plz
    help me thanks..
    here is table structure and ASP code.
    {code}
    Roll number
    Name varchar2(20)
    Subject varchar2(20)
    Marks number
    Attach Blob
    {code}

    {code}
    <%
    Dim conn,recset

    set conn=server.CreateObject(«ADODB.connection»)
    set recset=server.CreateObject(«ADODB.recordset»)
    ‘set conn=Server.CreateObject(«ADODB.Connection»)
    conn.Provider=»MSDAORA;Data Source=orcl;User ID=XXXX;Password=XXX»

    conn.Open(conn)

    Dim r,n,s,m,att

    Sorry, I don’t know much about asp coding. I do see that you are stating that your provider is MSDAORA, which suggests you are really using the MS driver, not oracle’s. In fact, I’d guess that this is bypassing the ODBC DSN definitions completely, and you are telling it to use the MS driver, and reference ‘orcl’, which would be looked up in the tnsnames.ora (which Mark referred to and to which you have not yet responded).
    >

    r=upload.Form(«roll»)
    n=upload.Form(«nam»)
    s=upload.Form(«sub»)
    m=upload.Form(«mark»)
    att=upload.Form(«FILE1»)

    Response.Write «Succssfully Inserted»
    conn.execute «insert into table1 values(‘»&r&»‘,'»&n&»‘,'»&s&»‘,'»&m&»‘,'»&file1&»‘)»
    conn.close

    %>

    {code}

  • 773278


    773278


    Member Posts: 588 Green Ribbon

    hi

    tnsnames.ora is something like this.

    orcl =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.173.1.1)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVICE_NAME = orcl)
        )
      )

    plz guide me how to use Oracle Driver for ASP.

  • sb92075


    sb92075


    Member Posts: 42,196 Blue Diamond

    nisha wrote:
    plz guide me how to use Oracle Driver for ASP.

    This a WINDOWS problem & solution!

    Oracle RDBMS accepts every connection request it receives.

  • Mark D Powell

    You should have posted this information to begin with. The posted example is using the MS driver rather than the Oracle driver which in itself should not matter. I do not think the posted code is using the DSN. It appears to directly provide the reference to the required Oracle client tnsnames.ora entry along with the target database username and password.

    I suggest pulling your code documentation and look at how you can code the ADODB.connection. I would also switch to the Oracle provider.

    If you can connect from the client to the target Oracle using SQLPlus then the cliient is fine and the problem is in your code/connection.

    HTH — Mark D Powell —

This discussion has been closed.

I want to add two service names in one tnsnames.ora file and getting error
in below 2 image in «Microsoft ODBC Driver Configuration».
enter image description here

asked Sep 11, 2016 at 8:03

sandhiya's user avatar

4

One trick which help me is, when you fill:

Data Source Name     Test
TNS Service Name     10.1.1.105:1521/ALXTEST

so you need to specify the hostname:port/servicename, then it should work

answered Jul 14, 2020 at 9:40

PV8's user avatar

PV8PV8

5,3775 gold badges41 silver badges76 bronze badges

1

click on start icon->type cmd in the text box-> you can see cmd.exe-> click on it-> type tnsping click enter.

check whether you can connect to the destination or not

answered Sep 30, 2016 at 12:32

rajesh's user avatar

   ЧессМастер

03.03.21 — 18:30

Всем доброе время суток !

Ситуация следующая.

Есть база Firebird на компе в сети (пропускная система).

Надо к ней подключиться  из 1С.

Через консоль с компа все отлично подключается — то есть по идее все нормально с правами, драйверами и т.п.

Но через 1С хоть ты тресни никак не хочет.

Текст кода

    Conn = Новый COMОбъект(«ADODB.Connection»);

    
    Conn.ConnectionString = «DRIVER=Firebird/InterBase(r) driver;» +

     «DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB;» +  // Исправьте на свой IP, порт и путь к базе данных !

     «UID=SYSDBA;» +                                     // Исправьте на свое имя пользователя !

     «PWD=masterkey;» +                                  // Исправьте на правильный пароль !

     «CHARSET=WIN1251;» +                                // Исправьте на свою кодировку подключения !!!

     «C:Program Files (x86)FirebirdFirebird_2_1binfbclient.dll»;

    
     Conn.ConnectionTimeout = 180;

     Conn.CursorLocation = 3;

     // Подключаемся к базе данных

      
     Попытка

        Conn.Open(Conn.ConnectionString);

        
        Сообщить(«успешно подключились к базе проходной»);

        
     Исключение

        Сообщить(«Не удалось выполнить подключение » + ОписаниеОшибки());

     КонецПопытки;    

Выдает ошибку

«Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»

При этом через консоль Fireboird  с этого же компа под этим же пользователем с таким расположением DB все подключается.

В чем может быть дело ?

   Вафель

1 — 03.03.21 — 18:50

не установлен драйвера одбу

   ЧессМастер

2 — 03.03.21 — 20:16

(1) Установлен.

1. Панель управленияВсе элементы панели управленияАдминистрирование

Firebird/InterBase(r) driver

Версия 2.00.01.152

2. Консолью Firebird подключение к базе идет. Если бы драйвера не было то подключение консолью бы не проходило.

   ДенисЧ

3 — 03.03.21 — 20:31

Сейчас выяснится, что этот код &НаСервере…

   acht

4 — 03.03.21 — 20:47

64×32

   Кирпич

5 — 03.03.21 — 20:48

мож «CLIENT=C:Program Files (x86)FirebirdFirebird_2_1binfbclient.dll»;

   vovastar

6 — 03.03.21 — 21:02

(0) старый добрый Firebird…аж вздрагиваю при его упоминании…

   Вафель

7 — 03.03.21 — 21:15

консоль fb не юзает одбц, а нативно подкючается

   ЧессМастер

8 — 04.03.21 — 11:54

(3) Да в этом дело оказалось.

Пробовал это сделать в модуле объекта отчета на СКД. Сделал для проверки на клиенте — все работает.

Еще один момент можешь подсказать ?

При подключении внешнего источника данных с этой же строкой подключения выдает сообщение

Ошибка ODBC. SQLSTATE: IM002

Номер ошибки: 0

Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию

Я правильно понимаю что для того чтобы подключить внешний источник данных надо

1. Драйвер ставить на сервере 1С

2. Драйвер ставить той же разрядности как и сервер 1С.

   ЧессМастер

9 — 04.03.21 — 11:54

(6) Что делать — БД пропускной системы на нем крутится.

   Gimalaj

10 — 04.03.21 — 12:29

(8) >> Я правильно понимаю что для того чтобы подключить внешний источник данных надо…

Да, все верно.

   Gimalaj

11 — 04.03.21 — 12:32

А вообще, никогда не понимал людей, пишущих: ConnectionString = «DRIVER=такой-то, DBNAME=такая-то, UID=такой-то и т.д.».

Намного проще создать в системе DSN, а в коде написать «dsn=такой-то».

   ДенисЧ

12 — 04.03.21 — 12:35

(11) Хорошо, что мне не приходилось править твой такой код…

   Gimalaj

13 — 04.03.21 — 12:36

(12) ОК, аргументируй. Что не так?

   ДенисЧ

14 — 04.03.21 — 12:38

(13) Лишние движения телом.

   ДенисЧ

15 — 04.03.21 — 12:39

И переносимость. Забудешь ты притащить в прод свой дсн и ага.

   Gimalaj

16 — 04.03.21 — 12:41

(15) Ну это не аргумент. Точно так же на продуктовом сервере можно забыть установить драйвер, забыть изменить имя/логин/пароль для базы и т.д.

   ЧессМастер

17 — 04.03.21 — 20:58

(11) >Намного проще создать в системе DSN, а в коде написать «dsn=такой-то».

Если тебе не нравится писать в коде «DBNAME=такая-то» то никто не мешает хранить значение «DBNAME=такая-то» где угодно — в табличной части, в регистре сведений и т.п.

   ЧессМастер

18 — 04.03.21 — 21:02

(10) При работе на сервере появился новый прикол

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

При этом подключение идет под теми же данными как и с локальной машины. То есть при подключение с локальной машины подключение проходит, на сервере под этими же данными нет.

Что бросается в глаза — версия драйвера на сервере другая. Может при изменении версии драйвера поменялся синтаксис подключения ?

   Fram

19 — 05.03.21 — 00:33

(18) может все таки в разные базы ломишься?.. если что диск С на клиенте не всегда равно диск С на сервере

   ЧессМастер

20 — 05.03.21 — 11:37

(19) >может все таки в разные базы ломишься

Да нет в одну и ту же.

DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB

Это расположение БД пропускной системы на другом компе в сети. Если я со своего компа присоединяюсь с клиента то все нормально. Если с сервера с такой же строкой подключения выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Как может быть что под однги ми и теми же учетными данными

UID=SYSDBA

PWD=masterkey

с клиента пускает а с сервера нет ? Это бред какой то реальный.

   ЧессМастер

21 — 05.03.21 — 11:41

Вот это прикол

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Возникает вопрос — как же подключаться к Firebird на сервере если там 64 разрядная 1С ? И 32 разрядный драйвер Firebird не сработает.

   Пузан

22 — 05.03.21 — 11:43

(21) Ставить 64 разряда драйвер. Нет?

   ЧессМастер

23 — 05.03.21 — 11:59

(22) Смотри что получается

Сейчас стоит 64 разрядный драйвер.

При попытке подключения «на сервере» выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Это происходит по причине того что 64 разрядный драйвер с сервера пытается подключиться в базу Firebird которая создана в 32 разрядном приложении.

И при этом возникает вот этот нюанс

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

При этом 64 разрядный сервер не ставит 32 разрядный драйвер Firebird. Который нужен для обхода ограничения

>»Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   Пузан

24 — 05.03.21 — 12:04

Ну значит капец. С твоей базой можно работать только через 32 разрядную 1С.

   Вафель

25 — 05.03.21 — 12:04

   ЧессМастер

26 — 05.03.21 — 18:21

(25) Так там конкретики нет

> я наткнулся на веб-сайт, который предложил изменить реестр для решения другой проблемы.

На какой сайт ?

>Я закончил создание соединения ODBC непосредственно под HKLMSoftwareODBC

Что он конкретно менял ?

   ЧессМастер

27 — 05.03.21 — 18:38

У кого то работает подключение к Firebird через внешние источники данных на сервере 64 разрядном ?

   ДедМорроз

28 — 06.03.21 — 13:15

Прекрасно можно подключаться к 32 из 64 и наоборот,только разрядность установленного odbc драйвера должна совпадать с разрядностью приложения.

Ставим на сервер odbc64 и в путь.

   ДедМорроз

29 — 06.03.21 — 13:17

Ну и надо понимать,что сервер — это служба,запущенная на конкретной машине,и в строке подключения указывается ее адрес,а путь базы уже указывается относительно этой службы и на той машине,где она установлена.

   ЧессМастер

30 — 09.03.21 — 13:23

(28) >Прекрасно можно подключаться к 32 из 64 и наоборот,только разрядность установленного odbc драйвера должна совпадать с разрядностью приложения.

Ничего подобного

В (23) это подробно описано

Сейчас стоит 64 разрядный драйвер.

При попытке подключения «на сервере» выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Это происходит по причине того что 64 разрядный драйвер с сервера пытается подключиться в базу Firebird которая создана в 32 разрядном приложении.

И при этом возникает вот этот нюанс

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Не откроет базу данных созданную в Firebird 32 bit с сервере где установлен драйвер Firebird 64 bit.

А 32 разрядный драйвер Firebird на сервер 64 bit не ставится.

   ЧессМастер

31 — 09.03.21 — 13:26

(28) >Прекрасно можно подключаться к 32 из 64 и наоборот,

Нет нельзя.

При попытке подключения из 64 в 32 выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Причина в том что

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   Вафель

32 — 09.03.21 — 13:59

(31) фб должен быть 32 бит, а одбц — 64

   Вафель

33 — 09.03.21 — 14:01

ты напрямую к файлу обращаешься, а не к серверу чтоли?

   Кирпич

34 — 09.03.21 — 15:16

В сообщении об ошибке явно намекают про юзера и пароль. При чем тут 64 и 32. Фигня какая то. С правами надо разбираться.

   Кирпич

35 — 09.03.21 — 15:20

Можно же явно указать клиента в параметрах подключения. Поставить ODBC 64 и клиента 64 и всё будет работать.

   Gimalaj

36 — 09.03.21 — 15:45

(31) Значит, что-то у тебя не так. У меня точно такая же ситуация: база изначально работала с х32-приложением, потом понадобился доступ к ней из 1С. В настоящее время мы работаем с этой базой данных как из 32-разрядного дельфёвого приложения, так и из 64-разрядного сервера 1С.

   Gimalaj

37 — 09.03.21 — 15:47

Создай на сервере, где развернут сервер 1С источник DSN и протестируй оттуда.

   Кирпич

38 — 09.03.21 — 15:49

(37) Да автор уже, наверное, доложил начальству о фатальной ошибке в Fierbird и успокоился 🙂

   Кирпич

39 — 09.03.21 — 15:50

уж неделя прошла

   Gimalaj

40 — 09.03.21 — 15:53

(39) Ну, последнее сообщение он два часа назад написал.

   ЧессМастер

41 — 09.03.21 — 16:06

(32) >фб должен быть 32 бит, а одбц — 64

Так и есть.

   ЧессМастер

42 — 09.03.21 — 16:08

(33)

>ты напрямую к файлу обращаешься, а не к серверу чтоли?

К какому серверу ? Я подключаюсь к файлу

DBNAME=KD-SKUD-01:C:Program Files (x86)ENTServerDBCBASE.FDB

Этот файл лежит на компе с пропускной системой. И там база 32 bit.

При подключении с локальной машины при использовании драйвера Firebird 32 bit все проходит отлично.

Но как только подключение к этому же файлу идет с использованием 64 разрядного драйвера Firebird (через сервер 1С) валится ошибка

При попытке подключения из 64 в 32 выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

   ЧессМастер

43 — 09.03.21 — 16:09

(34) > При чем тут 64 и 32

При том что

«Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

А именно этот фокус пытается провернуть 64 разрядный драйвер когда лезет в 32 разрядную базу Firebird.

   ЧессМастер

44 — 09.03.21 — 16:12

(35) >Поставить ODBC 64 и клиента 64 и всё будет работать.

Нет не будет.

Еще раз

Как только клиент (драйвер) меняется с 32 разрядного на 64 разрядный и идет попытка подключения к 32 разрядной базе Firebird валится ошибка

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

Обход этот ошибки только

1. Конвертация базы Firebird в 64 разрядную

2. Работа с 32 разрядной базой Firebird с клиента с использованием драйвера 32 bit

3. Работа с 32 разрядной базой Firebird из файловой базу с клиента с использованием драйвера 32 bit.

   ЧессМастер

45 — 09.03.21 — 16:14

(35) >Можно же явно указать клиента в параметрах подключения.

Что ты укажешь явно ?

На сервере 1С который 64 bit

1. Драйвер 32 разрядный не ставится.

2. При попытке подключения из 64 сервера 1С в 32 базу Firebird выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

   ЧессМастер

46 — 09.03.21 — 16:16

Я перечитал кучу статей на Инфостарте на эту тему.

Народ только такие способы нашел

1. Конвертация базы Firebird в 64 разрядную

2. Работа с 32 разрядной базой Firebird с клиента с использованием драйвера 32 bit

3. Работа с 32 разрядной базой Firebird из файловой базу с клиента с использованием драйвера 32 bit.

Напрямую с сервера 64 bit в базу Firebird 32 bit никто не победил.

   ЧессМастер

47 — 09.03.21 — 16:22

(37) >Создай на сервере, где развернут сервер 1С источник DSN и протестируй оттуда.

Если речь идет про ВнешниеИсточникиДанных то при подключении из 1С в базу Firebird используется как раз драйвер 64 bit с сервера 1С.

С такой же ошибкой как это происходит при попытке подключиться обработкой на сервере.

Те же грабли только в профиль.

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

   ЧессМастер

48 — 09.03.21 — 16:27

(36) >В настоящее время мы работаем с этой базой данных как из 32-разрядного дельфёвого приложения, так и из 64-разрядного сервера 1С.

Возможно в вашем приложении нет такого жесткого ограничения какое есть у Firebird

>»Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

   Кирпич

49 — 09.03.21 — 16:43

С какого перепугу «Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Сервер же на другом компе. Ему пофиг разрядность клиента. Он же через сеть общается. У меня вот работает сервер на 32 и подключаюсь я 64 битным клиентом.

   Кирпич

50 — 09.03.21 — 16:49

С правами там что то. Написано же черным по белому.

   Gimalaj

51 — 09.03.21 — 17:04

(47) Речь в (37) идет НЕ про внешние источники данных.Речь там идет вообще не про 1С.

Открой в Виндоус «Панель управления» — «Администрирование» — «Источники данных ODBC (64-разрядная версия)». Создай DSN и в созданном DSN ты сможешь протестировать соединение с Firebird.

   Gimalaj

52 — 09.03.21 — 17:05

(50) Черным по белому там написано не про права, а про логин/пароль.

   Gimalaj

53 — 09.03.21 — 17:20

(48) «Упрямство — первый признак тупости» (с) Глеб Жеглов, «Место встречи изменить нельзя», по-моему 3-я серия.

   Кирпич

54 — 09.03.21 — 17:32

(52) Ну как бы нет имени и пароля — нет прав

   Garykom

55 — 09.03.21 — 17:37

(0) Лично я использую прокладку на Golang для работы с внешними БД из 1С

Ибо внешние источники данных слегка задолбали, на сервере часто прав нету — злобные админы

   Garykom

56 — 09.03.21 — 17:38

(55)+ Если надо то могу сваять и выложить для Firebird

   Garykom

57 — 09.03.21 — 17:39

(56)+ https://github.com/nakagami/firebirdsql

суть обычный exe (или бинарник под линукс) который запускаешь с параметрами, передав ему параметры подключения, текст запроса sql и имя файла куда писать результат

и все в файле результат или в csv или в json

   Черепахыч

58 — 09.03.21 — 17:47

я тоже недавно парился с этой проблемой

Смотри. у меня тоже сервер 64 бит.

на клиенте ставлю 32 бит.

Драйвер да.. 32 битный. Firebird_ODBC_2.0.5.156_Win32.exe или gds32.dll

В моем случае работает только на клиенте.

Процедуру подключения, использование драйвера пишу на #клиенте

на всякий случай кидаю тебе свой 100% рабочий код

СКУД система у меня  «Тайм контрол»

&НаКлиенте

Процедура Рефф_ЗаполнитьTimeControl(Команда)

    Если объект.Табель.Количество()>=0 тогда

        Если Вопрос(«Очистить табличную часть?»,РежимДиалогаВопрос.ДаНет)=КодВозвратаДиалога.Да тогда

            объект.Табель.Очистить();

        Конецесли;

    Конецесли;    

    
    
        
    FBDBAddr  = «192.168.2.5/3053:C:Program Files (x86)TimeControlBASEOKO.FDB»;    

    
    //где 192.168.2.5/3053 — адрес удаленного сервера с софтиной time Control

    //C:Program Files (x86)TimeControlBASEOKO.FDB» — путь базе на удаленном сервере (это не обязательно локальный путь!)

    
    
    //FBDBAddr  = «192.168.2.5/3053″;//:C:Program Files (x86)TimeControlBASEOKO.FDB»;

    FBUserName = «MEGA»;

    FBUserPass= «STMEGA21»;

    
    ConnectionБД =Новый COMОбъект(«ADODB.Connection»);

    
    ConnectionБД.ConnectionString=»driver=Firebird/InterBase(r) driver;

    //|Dialect=3;

    |CHARSET=NONE;

    |Uid=MEGA;

    |Pwd=STMEGA21;

    |Dbname=»+СокрЛП(FBDBAddr);

    ConnectionБД.ConnectionTimeOut=15; // и хватит

    ConnectionБД.CursorLocation=3;

    
    Попытка

        ConnectionБД.Open(ConnectionБД.ConnectionString);

        //Сообщить(«Соединение успешно установлено!»);

    Исключение

        Сообщить(«Ошибка при установке соединения: «+ОписаниеОшибки());

        мСоединение=Неопределено;

        возврат;

    КонецПопытки;

    //

    
    
    //SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(:BDATE, :FDATE,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE

    

    //Входные параметры:

    //BDATE — начало периода

    //FDATE — окончание периода

    //

    //Выходные поля:

    //DEVICE_UID — код сотрудника на устройстве

    //TABNUM — табельный номер

    //FULLNAME- ФИО

    //WORKDATE — дата

    //FACT_MIN_WORK — отработанное время в минутах    

    //BDATE =»‘01.11.2020′»;

    //FDATE =»‘30.11.2020′»;

    BDATE = «‘» + Формат( НачалоМесяца(объект.НачалоПериода) , «ДФ=dd.MM.yyyy» )+ «‘»;

    FDATE = «‘» + Формат( КонецМесяца(объект.НачалоПериода ) , «ДФ=dd.MM.yyyy» )+ «‘»;

    
    RS = Новый COMОбъект(«ADODB.Recordset»);

    RS.ActiveConnection = ConnectionБД;

      RS.CursorType = 1;

      RS.LockType = 3;

    //Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(:BDATE, :FDATE,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(«+BDATE+», «+FDATE+»,-1,-1,»,»,0,’0:00′,’0:00′,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    //Str = «SELECT U.FULLNAME, U.TABNUM, U.DEVICE_UID, G.WORKDATE, G.FACT_MIN_WORK FROM GLOBAL_WORK_BY_DAY(‘01.11.2020′,’30.11.2020′ ,-1,-1,»,»,0,’0:00′,’0:00’,0,1,0) G LEFT JOIN USERS U ON (G.UID=U.UID) ORDER BY U.FULLNAME, G.WORKDATE»;

    попытка

        RS.Open(Str, ConnectionБД);

        //Сообщить («Запрос — ОК»);

    исключение

        Сообщить («Проблемы с выполнением запроса к FireBird»);

        возврат;

    КонецПопытки;

    
    
    ТаблицаТаймКонтрол.Очистить();

     Пока RS.EOF() = 0 Цикл

        
        НовСтрТК = ТаблицаТаймКонтрол.Добавить();

        НовСтрТК.ФИО  =RS.Fields(«FULLNAME»).Value;

        НовСтрТК.Дата = RS.Fields(«WORKDATE»).Value;

        НовСтрТК.КоличествоМинут = RS.Fields(«FACT_MIN_WORK»).Value;

        НовСтрТК.КоличествоЧасов = НовСтрТК.КоличествоМинут / 60;

        НовСтрТК.НомерДня =  День( НовСтрТК.дата);

        RS.MoveNext();

     КонецЦикла;

   ЧессМастер

59 — 10.03.21 — 18:47

(49) >У меня вот работает сервер на 32 и подключаюсь я 64 битным клиентом.

Тогда объясни как может быть такое — если через COMОбъект(«ADODB.Connection») через клиента все работает, а при использовании ПараметрыСоединенияВнешнегоИсточникаДанных через сервер с той же строкой подключения выдает

Ошибка при вызове метода контекста (УстановитьСоединение): Ошибка ODBC. SQLSTATE: 08004

Номер ошибки: -902

Описание: [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

я подчеркиваю — С ТОЙ ЖЕ СТРОКОЙ ПОДКЛЮЧЕНИЯ.

   ЧессМастер

60 — 10.03.21 — 18:48

(50) >С правами там что то. Написано же черным по белому.

Строка подключения через клиент и через сервер ОДИНАКОВАЯ.

Но через клиент работает а через сервер нет.

Открываем гугл по поводу ошибки [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.

и читаем

https://qna.habr.com/q/449495

«Надо было удалить Firebird для 64 bit и установить Firebird для 32 bit. Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

  

   ЧессМастер

61 — 10.03.21 — 18:51

(52) >Черным по белому там написано не про права, а про логин/пароль.

Я тебе  еще раз говорю

Через клиент работает а через сервер нет. С ТОЙ ЖЕ СТРОКОЙ ПОДКЛЮЧЕНИЯ.

Я бы понял если бы в строке подключения через клиент было

UID=SYSDBA

PWD=masterkey

а через сервер что то другое. Но строка ОДИНАКОВАЯ.

   Кирпич

62 — 12.03.21 — 10:44

(60) «Надо было удалить Firebird для 64 bit и установить Firebird для 32 bit. Оказывается файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit.»

Так это написал такой же специалист как и ты. На самом деле, переустановив Firebird, он просто снес настройки и поставил новые, по умолчанию.

   ЧессМастер

63 — 09.04.21 — 23:39

(58) Спасибо за помощь.

Я сделал на мой взгляд намного удобной и проще. Подключил базу через Внешние источники данных, прописал таблицы. Далее с помощью 1С-ных запросов получаю данные, заполняю ТЗ и подаю на вход СКД.

   ЧессМастер

64 — 09.04.21 — 23:42

(62) «Так это написал такой же специалист как и ты»

А ты что телепат что можешь определять квалификацию другого специалиста не видя и не зная что он делал ? Только не надо мне заливать что ты сам всегда со всем разбираешься и никогда не спрашиваешь ни у кого как это сделать. Так не бывает.

   Кирпич

65 — 10.04.21 — 07:35

(64) «никогда не спрашиваешь»

Так ты спрашиваешь и не слушаешь, что тебе говорят. Нафиг спрашивать тогда.

Специалист ты конечно же хороший, только любой программист усомнится в утверждении, что «файл базы данных созданный в Firebird 32 bit, не открывается в Firebird 64 bit». А ты сходу веришь какому то школьнику, который написал это где то на заборе.

  

ДедМорроз

66 — 10.04.21 — 17:54

На самом деле,там не только от битности зависит,но и от версии — файл,созданный одной версией сервера,на другой не открывается,и в ошибке как раз и пишется,что файл не той версии.

Ну и потом,для firebird есть ODBC-драйвер как 32 бита,так и 64 и вот битность драйвера должна совпадать с битностью приложения,а совпадение с битностью сервера не требуется.

  • Remove From My Forums
  • Question

  • I’ve written a small MS Access 2007 program having links with the tables of SQL Server 2005 Express Edition. The problem is it worked out in development environment. But it’s giving error during production environment.

    SQL State ‘08004’

    Sql Server Error: ‘4060’

    Server rejected the connection; Access to selected database has been denied.

    How to fix this error?


    nories

Answers

  • If they are using the SQL Express system by default it installs with the SQL Server Accounts Disabled and they only allow Trusted connections, Also the remote connections are disabled. As the sa account is a sql server account this would be disablled.


    http://www.virtualrealm.com.au — XNA Game Programming News and Resources from Downunder.

    • Proposed as answer by

      Wednesday, April 7, 2010 2:05 PM

    • Marked as answer by
      Alex Feng (SQL)
      Friday, April 9, 2010 10:03 AM

Have an odbc conenction, to connect to a WMS database (I believe they support odbc only) and on connection open gets the exception {«ERROR [08004] [ODBC Firebird Driver]unavailable database»}. The WMS Server & Client components are installed on the machine where my code also runs. Conenction string below

«DRIVER=Firebird/InterBase(r) driver; UID=SYSADMIN; PWD=MASTERKEY; DBNAME=C:SampleDb.FDB;»

I am clueless on how to proceed. Some of the already seen answers says, only one application can access the db at a time or so. In that case how I find who else trying to access this db and stop?

My application is a windows forms application and now the code runs in debug mode.

Thanks
Nishitha

What I have tried:

Tried on another machine in a different network, where WMS is installed correctly on a different machine in the network. There as well connection fails.


Had to prefix dbpath with ‘localhost:’ and password was in lower case. That helped me to connect. But since I had to get schema info, which was limited in ODBC, moved to using FireBirdClient, that is Firebird Ado.Net provider.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject,
20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8
+1 (416) 849-8900

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка odbc sqlstate 08001 номер ошибки 101
  • Ошибка obc рефрижератор элинж