InterBase и Firebird для работы с базами данных от разных версий IB/FB использует понятие ODS. ODS – On Disk structure – номер версии физической структуры файла базы данных. Он изменяется в случае когда возможности новых версий затрагивают изменения в метаданных.
Версия ODS проверяется при подключении fbclient.dll (gds32.dll). Если сервер обнаруживает что версия ODS больше поддерживаемой, то он генерирует ошибку:
Unsupported on-disk structure for file xxx.fdb; found 32779, support 10
Такая ошибка может проявляться в нескольких случаях:
- вы пытаетесь подключиться через Firebird SQL Server к Interbase database версии выше чем IB 6.0
- вы подключаетесь к Firebird database более новой версии чем версия сервера Firebird.
Вот список основных ODS для каждой версии Interbase и Firebird:
Версия | Основная версия ODS | Может работать с ODS | Примечания |
---|---|---|---|
InterBase 4.0/4.1 | 8.0 | ... | |
InterBase 4.2 | 8.2 | 8.2 | |
InterBase 5.0/5.1 | 9.0 | 8.2 | 2. Из-за отличий в версиях BLR, используемых IB 6 и IB 5.x, не рекомендуется полноценно работать с базой ODS 9 из IB 6 (особенно, если предполагается возврат на IB 5.6), в частности, модифицировать триггеры и процедуры. То же самое относится к рестору под 5.6 бэкапа, с БД которого успели поработать (меняли процедуры и триггеры) в 6.0 и выше. |
InterBase 5.5 | 9.1 | 8.2 | |
InterBase 5.6 | 9.1 | 8.2 | |
InterBase 6.0 (прим. 1) Firebird 1.0 Yaffil 1 |
10.0 | 9.0/9.1 (прим. 2) | 1. Сюда же относятся InterBase 6.5, Firebird 1.0, Yaffil. Они могут добавлять незначительные изменения в отношении системных таблиц (например, дополнительные индексы), которые не влияют на совместимость между разными версиями серверов. |
Firebird 1.5 | 10.1 (прим. 7) | 9.0/9.1 (прим. 2), 10.0 | 7. ODS 10.1, созданная 64-разрядным FB 1.5 несовместима с обычной ODS 10.1. Поэтому открыть такую базу могут Firebird 1.5 и 2.x только 64-разрядные. В других номерах ODS как Firebird, так и InterBase, отличий по разрядности сервера нет. |
InterBase 7.0 | 11.0 | 10.0 | |
InterBase 7.1 | 11.1 | 10.0 | |
InterBase 7.5 (прим. 3) | 11.2 | 10.0 | 3. Перед установкой IB7.5 обязательно нужно сделать backup, даже если вы работаете на 7.0/7.1 с базой ODS 11.0/11.1. IB 7.5 автоматически обновит ODS до 11.2, что не гарантирует обратную работоспособность 7.0/7.1 с этой ODS. В ODS 11.2 как минимум поддерживаются индексы со специальным хранением null, новые конструкции SQL, и т. п. Подробнее см. документ. |
Firebird 2.0 | 11.0 (прим. 4) | 10.x | 4. Firebird 2.0 имеет ODS 11.0, однако эта версия ODS не совпадает с ODS 11.x от InterBase 7.x. Firebird никакой версии не работает с базами формата InterBase ODS 11.x, и наоборот – никакая версия InterBase не поддерживает формат Firebird 2.0 ODS 11.0. В данном случае никаких опасений по поводу "порчи базы не тем сервером" нет. |
Firebird 2.1 | 11.1 (прим. 4) | 10.x, 11.0 | |
Firebird 2.5 | 11.2 (прим. 5) | 10.x, 11.0 | 5. ODS 11.2 Firebird 2.5 несовместима с Firebird 2.1 и 2.0. То есть, базы от Firebird 2.5 не могут быть открыты Firebird версий 2.0 и 2.1. |
Firebird 3.0 | 12.0 | предыдущие не поддерживаются | В Firebird 3.0 включен движок (engine12.dll) только для поддержки ODS 12. Предыдущие ODS не поддерживаются. |
InterBase 2007 | 12.0 | 11.x (InterBase 7.x) | |
InterBase 2009 | 13.1 | 12.0 | |
InterBase XE | 15.0 (прим. 6) | 13.1, 12, 11, 10 | 6. Где ODS 14? Никто не знает. |
InterBase XE3 | 15.0 | 13.1 | |
InterBase XE7 | 16.0 | 15, 13 | "Рабочая" версия ODS для InterBase XE7 может быть настроена в IBCONFIG. В этом случае restore и создание БД будут происходить в той ODS (13,15,16), которая указана в IBCONFIG. ! поддерживается ODS 13.2, которая несовместима с InterBase 2009. ODS 13.1 при первом коннекте принудительно обновляется до 13.2 |
InterBase 2017 | 17.0 | 16-13 |