Перейти к содержимому


Фото
- - - - -

База на FireBird


  • Please log in to reply
34 ответов в этой теме

#1 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 08:48

А перенос базы ЕС на FireBird 2.5/3.0 возможен?

Сообщение было изменено IlyaS: 25 Апрель 2016 - 08:49


#2 maxic

maxic

    Keep yourself alive

  • Moderators
  • 13 094 Сообщений:

Отправлено 25 Апрель 2016 - 08:57

В качестве внешней базы данных Сервера Dr.Web может использоваться:

◆ СУБД Oracle.

◆ СУБД PostgreSQL.

◆ Microsoft SQL Server/Microsoft SQL Server Express.



#3 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 09:59

Внешняя база данных.
Предоставляются встроенные драйвера для подключения следующих баз данных:

  • Oracle,
  • PostgreSQL,
  • ODBC-драйвер для подключения других баз данных, таких как Microsoft SQL Server/Microsoft SQL Server Express.
Вы можете использовать любую базу данных, соответствующую вашим запросам.

То есть по ODBC возможно подключение к большему списку баз.



#4 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 6 061 Сообщений:

Отправлено 25 Апрель 2016 - 10:10

То есть по ODBC возможно подключение к большему списку баз.

Это в теории. Практика с теорией даже в рамках SQL-92 любит расходиться. Попробовать можно, но велика вероятность, что найдутся места, где для firebird потребуются какие-то специфичные костыли.


Семь раз отрежь – один раз проверь

#5 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 10:38

Пока только ради попробовать и ставлю на FireBird.



#6 chs

chs

    Member

  • Posters
  • 249 Сообщений:

Отправлено 25 Апрель 2016 - 11:07

ODBC-драйвер для подключения других баз данных, таких как Microsoft SQL Server/Microsoft SQL Server Express.

О как !

 

Так с MS SQL DrWeb через ODBC работает ? А с Oracle через нативный драйвер ?

Так может быть в прослойке ODBC находятся все проблемы связанные с MS SQL Express ?



#7 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 11:25

ODBC-драйвер для подключения других баз данных, таких как Microsoft SQL Server/Microsoft SQL Server Express.

Так с MS SQL DrWeb через ODBC работает ? А с Oracle через нативный драйвер ?

Угу :)
Spoiler

Сообщение было изменено IlyaS: 25 Апрель 2016 - 11:29


#8 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 11:47

Первая проблема:

---------------------------
Dr.Web Server
---------------------------
Ошибка при инициализации базы данных. Вы хотите продолжить установку?
---------------------------
Yes No
---------------------------

Spoiler

20160425.113644.04 db3 [04328 128c] stp:1  [DB] Thread has got connection "update server status"
20160425.113644.04 db3 [04328 128c] stp:1  [DB] Successful BEGIN transaction, 00.000 wait
20160425.113644.04 ERR [04328 128c] stp:1  [DB] Failed, unable to complete "execute statement" operation because of [ODBC Firebird Driver][Firebird]Dynamic SQL Error; SQL error code = -204; Table unknown; SERVER_STATUS; At line 1, column 22 (ODBC error -1, native error -204, state 42S02), 00.000, UPDATE server_status SET state=?,marker=?,uptime=? WHERE id=? [0, 20160425083644048, 4, "c0d59bd4-c00a-e611-313e-e864fda5cb06"]
20160425.113644.04 ERR [04328 128c] stp:1  [DB] Unsuccessful SQL "update server status" transaction, rolling back
20160425.113644.04 db3 [04328 128c] stp:1  [DB] Successful ROLLBACK transaction, 1 statement, 00.000 wait, 00.000 execute, 00.000 rollback
20160425.113644.04 db3 [04328 128c] stp:1  [DB] Thread has freed connection "update server status"
...
20160425.113644.07 tr1 [04328 09e0] main   Unloading library "C:/Program Files/DrWeb Server/bin/database/drwdbdrv_odbc.DLL"
20160425.113644.07 ntc [04328 09e0] main   [Server] Process exit code is 0x11/17 (error while initializing database)

и таблиц в базе ни одной нет... O_o



#9 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 11:54

Чуть выше была ошибка:
 
20160425.113639.99 db3 [04328 16e4] str:1  Loading library "C:/Program Files/DrWeb Server/bin/database/drwdbdrv_odbc.DLL"
20160425.113639.99 tr1 [04328 16e4] str:1  Dr.Web Server ODBC Module Version 10.00.0.201507030 (REL-1000, WinNT 5.1/PPro)
20160425.113639.99 tr1 [04328 16e4] str:1  Unable to find symbol `statistics' in library `C:/Program Files/DrWeb Server/bin/database/drwdbdrv_odbc.DLL' because of The specified procedure could not be found (code=127) and runtime error is No such file or directory (errno=2)
20160425.113639.99 tr0 [04328 16e4] str:1  Database "drwdbdrv_odbc" from "C:/Program Files/DrWeb Server/bin/database/drwdbdrv_odbc.DLL" successfully loaded
20160425.113639.99 inf [04328 16e4] str:1  Dr.Web Server Version 10.00.0.201507030 (REL-1000, WinNT 5.1/PPro) has risen
20160425.113640.00 tr0 [04328 09e0] main   [Server] Started well after 00.701
20160425.113642.44 wrn [04328 09e0] main   [ODBC] Detected untested "Firebird" driver (reported only once)
20160425.113642.44 tr1 [04328 09e0] main   [ODBC] Created Firebird V6.3 instance #002B9828 @003A0998 (gen. #1) using E:\SQL_DATA\DRWEBES.FDB as SYSDBA@FLAWLESS (Firebird V06.03.32483 WI-V Firebird 3.0)
20160425.113642.73 tr1 [04328 09e0] main   [ODBC] Created Firebird V6.3 instance #00EA0BD8 @0039B0D0 (gen. #1) using E:\SQL_DATA\DRWEBES.FDB as SYSDBA@FLAWLESS (Firebird V06.03.32483 WI-V Firebird 3.0)
20160425.113642.73 db3 [04328 09e0] main   Loading library "C:/Program Files/DrWeb Server/bin/database/drwdb_manager.DLL"
20160425.113642.83 tr1 [04328 09e0] main   Dr.Web Server DB Management Library Version 10.00.0.201507030 (REL-1000, WinNT 5.1/PPro)
20160425.113642.83 db3 [04328 09e0] main   [DB] Thread has got connection "initialize DB"
20160425.113642.83 db3 [04328 09e0] main   [DB] Successful BEGIN transaction, 00.000 wait
20160425.113643.12 ERR [04328 09e0] main   [DB] Failed, unable to complete "execute statement" operation because of [ODBC Firebird Driver][Firebird]Dynamic SQL Error; SQL error code = -204; Table unknown; TABLES_LIST; At line 1, column 30 (ODBC error -1, native error -204, state 42S02), 00.296, SELECT name FROM tables_list WHERE name = 'dbstruct'
20160425.113643.12 ERR [04328 09e0] main   [DB] Unsuccessful SQL "SELECT name FROM tables_list WHERE name = 'dbstruct'" transaction, rolling back
20160425.113643.12 db3 [04328 09e0] main   [DB] Successful ROLLBACK transaction, 1 statement, 00.000 wait, 00.296 execute, 00.000 rollback
20160425.113643.14 tr0 [04328 09e0] main   [DbMgr] Initialization with Server uuid "c0d59bd4-c00a-e611-313e-e864fda5cb06", Agent key "C:\Program Files\DrWeb Server\etc\agent.key", SQL script "-", Lua script "-", Ini file "-", password "admin"
20160425.113643.17 db3 [04328 09e0] main   [DB] Successful BEGIN transaction, 00.000 wait
20160425.113644.00 ERR [04328 09e0] main   [DB] Failed, unable to complete "execute statement" operation because of [ODBC Firebird Driver][Firebird]invalid statement handle (ODBC error -1, native error -901, state HY000), 00.826, CREATE TABLE dbstruct( dbver INTEGER, PRIMARY KEY(dbver) )
20160425.113644.00 ERR [04328 09e0] main   [DB] Unsuccessful SQL "batch" transaction, rolling back
20160425.113644.00 db3 [04328 09e0] main   [DB] Successful ROLLBACK transaction, 1 statement, 00.000 wait, 00.826 execute, 00.000 rollback
20160425.113644.00 ERR [04328 09e0] main   [DbMgr] Unable to execute SQL transaction because of
20160425.113644.01 ntc [04328 09e0] main   [DbMgr] SQL transaction was "''CREATE TABLE dbstruct( dbver INTEGER, PRIMARY KEY(dbver) )''; ''INSERT INTO dbstruct VALUES( 221 )''; ...
20160425.113644.01 db3 [04328 09e0] main   [DB] Thread has freed connection "initialize DB"
20160425.113644.01 FTL [04328 09e0] main   Database initialization error.
See the log file for details.
Инициализация какой-то TABLES_LIST хочет видеть.

Сообщение было изменено IlyaS: 25 Апрель 2016 - 11:55


#10 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 6 061 Сообщений:

Отправлено 25 Апрель 2016 - 12:12

Так с MS SQL DrWeb через ODBC работает ? А с Oracle через нативный драйвер ?

С орацле тоже может через odbc, но не без проблем.


Инициализация какой-то TABLES_LIST хочет видеть.

Хочет, если есть. Если нет, проблема дальше.


Семь раз отрежь – один раз проверь

#11 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 12:20

База пустая осталась, наверное, ROLLBACK все зачистил. Собираюсь попробовать drwcsd initdb.

Не судьба с пустой базой.
А в чем может быть проблема?


Сообщение было изменено IlyaS: 25 Апрель 2016 - 12:22


#12 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 6 061 Сообщений:

Отправлено 25 Апрель 2016 - 12:27

Предлагаете погадать?


Семь раз отрежь – один раз проверь

#13 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 12:39

Сейчас :)
Ошибка Precision в TABLES_FIELDS, из-за нее все остальное "валится":
> "C:\Program Files\Firebird\Firebird_3_0\isql.exe" -u SYSDBA -p drweb0 -i "init.sql" -o fbinitdb.log -m -m2 E:\SQL_DATA\DRWEBES.FDB

Statement failed, SQLSTATE = HY104
Dynamic SQL Error
-SQL error code = -842
-Precision must be from 1 to 18
After line 4 in file init.sql
Statement failed, SQLSTATE = 42S02
Dynamic SQL Error
-SQL error code = -204
-Table unknown
-TABLES_FIELDS
-At line 1, column 13
At line 29 in file init.sql
...
В isql.exe есть набор параметров:
Spoiler

Может, с выбором диалекта -s поиграть?
По ходу, NUMERIC(19) - это много для FB3 :)

Прикрепленные файлы:


Сообщение было изменено IlyaS: 25 Апрель 2016 - 12:41


#14 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 12:50

Понять в доке, какой-же NUMERIC "самый большой" не шмагла :)



#15 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 12:57

Тут вроде понятно почему:

> >So the mapping NUMERIC(18,0) to BIGINT is an illegal one and must be removed until firebird have a INT64 field.
No.  Numerics between 10 and 18 digits are stored as quadwords which are precisely int64.

>How did Borland manage to claim that NUMERIC( 18, 0) was equivalent to 64 bit integer?
>(2^63-1 == 9223372036854775807, 19 digits)
Numeric (18, x) is a subset of int64.  They couldn't claim numeric (19, x) because there are 19 digit numbers that don't fit.

А в сравнении еще понятнее написано: DECIMAL (p,s) / NUMERIC (p,s) precision<19,s<p.

 

Запилите скрипт в инсталл, или пока ручками поправить?


Сообщение было изменено IlyaS: 25 Апрель 2016 - 13:00


#16 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 6 061 Сообщений:

Отправлено 25 Апрель 2016 - 12:58

Оно не поддерживает даже 64-разрядные целые в NUMERIC? Ужас.

Вот они и костыли, нужно местами вместо NUMERIC вкорячивать BIGINT, если это вообще поможет. ODBC тут не спасёт, нужна поддержка со стороны приложения.


Семь раз отрежь – один раз проверь

#17 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 13:01

Оно не поддерживает даже 64-разрядные целые в NUMERIC? Ужас.

Вот они и костыли, нужно местами вместо NUMERIC вкорячивать BIGINT, если это вообще поможет. ODBC тут не спасёт, нужна поддержка со стороны приложения.

Та зачем? Достаточно поменять везде NUMERIC(>=19) на NUMERIC(18) :)


Сообщение было изменено IlyaS: 25 Апрель 2016 - 13:01


#18 Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 6 061 Сообщений:

Отправлено 25 Апрель 2016 - 13:04

И туда влезут числа в 19 десятичных знаков?


Семь раз отрежь – один раз проверь

#19 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 13:10

Нет. А у вас будут такие числа?

Всего три поля NUMERIC(19):

tables_fields.maxval NUMERIC(19) -- field's max. value (numeric) or length
-- attributes bitmask
-- 1: has default (DEFAULT),
-- 2: not nullable (NOT NULL).
tables_fields.attributes NUMERIC(19) -- field's attrbutes bitmask, see above
-- index attributes bitmask
-- 1: simple table index, (incompatible with 2)
-- 2: table primary key, (incompatible with 1)
-- 4: PgSQL clustering index.
-- 8: unique index (with 1).
tables_indices.attrs      NUMERIC(19) -- index type bitmask, see comments above

пока с лихвой NUMERIC(18) хватит. Опасаетесь за maxval? ИМХО, переполнение обязательно будет, но очень не скоро.



#20 IlyaS

IlyaS

    Massive Poster

  • Posters
  • 2 911 Сообщений:

Отправлено 25 Апрель 2016 - 13:17

BIGINT как maxval выглядит логичнее, и он поддерживается FB. Но стоит ли переделка усилий...

С NUMERIC(18) уже лучше:

Spoiler

Осталось условное выполнение убрать.

Прикрепленные файлы:

  • Прикрепленный файл  fbinitdb.log   593байт   0 Скачано раз

Сообщение было изменено IlyaS: 25 Апрель 2016 - 13:22