Перенос базы с Firebird на MSSQL

Для того, чтобы «перелить» данные из Firebird в MSSQL нам понадобиться IBProvider, вполне хватит его бесплатной (триальной) версии. Устанавливаем IBPovider и запускаем SQL Server Management Studio где восстанавливаем БД TS в которую будем переносить данные. Затем в MSSQL нужно создать Link Server:

Provider string выглядит следующим образом:

user=sysdba; password=masterkey; ctype=UNICODE_FSS; truncate_char=false; support_odbc_query=true; odbc_call_sp=2; auto_commit=true; schema_cache=0;

После проделанных манипуляций таблицы и данные Firebird видно в MSSQL. Для того чтобы можно было перенести данные, нужно отключить ограничения внешнего ключа для каждой связи и выполнить простейший скрипт:
INSERT INTO  dbo.tbl_AccountAddress
SELECT  *
FROM [TS]...[tbl_AccountAddress]

Если использовать x64 систему, возникает ошибка проверки коннекта с Firebird. Для ее устранения нужно скопировать из папки Bin Firebird-а файл GDS32.dll в папку SysWOW64 и переименовать его в fbclient.dll.
После полного переноса следует выполнить скрипт в MSSQL:
sp_change_users_login 'update_one', 'fkeys', 'fkeys'

P.S. Таким образом удалось перенести базу Firebird TS 3.3.2 в MSSQL TS 3.4.0
Порядок переноса:
1. Перенос данных.
2. Перенос сервисов.

Нравится

2 комментария

Перенесенная таким образом база успешно работает.

Здравствуйте Евгений,
Спасибо что поделились опытом, если вам интересно загляните в тему http://www.community.terrasoft.ru/forum/topic/6843
Там я использую дефолтный ODBC драйвер Firebird'а (Firebird_ODBC_2.0.0.151_Win32.exe)

Показать все комментарии