Chcąc wykonać migrację danych z programu Płatnik zapisanej w formacie Access 32 bit, napotkałem sporo trudności. Wiele osób radzi zainstalować SQL Serwer w wersji 32 bitowej i przenieść najpierw na ten serwer. Następnie na docelowy a później proponują żeby wykonać konwersję stopniowo do najwyższej wersji SQL.
Migracja Płatnik Access na SQL jest to operacja czasochłonna i problematyczna ponieważ potrzebny jest 32 bitowy system operacyjny żeby zainstalować 32 bitowy serwer SQL.
Udało mi się znaleźć rozwiązanie oparte na Microsoft SQL Server Migration Assistant (SSMA) for Access .
Dlatego program do wykonania migracji za darmo można pobrać ze strony Microsoftu https://www.microsoft.com/en-us/download/details.aspx?id=54255.
W ustawieniach projektu należy zmienić niektóre typy pól, menu Tools -> Project Settings -> Type Mapping
date na datetimetext[*..*]
text[*..*] na varchar[*]
memo na varchar[max]
W ustawieniach projektu na kolejnej zakładce, menu Tools -> Project Settings -> General; Conversion trzeba ustawić by nie były dodawane kolumny ze znacznikami czasu.
Jeżeli nie zapomnieliśmy w ustawieniach generalnych projektu wybrać wersji serwera na który będzie przenoszona baza danych, łączymy się z serwerem SQL i wskazujemy gdzie będzie umieszczona nowa baza.
Na stronie https://bakus.dev/1343/migracja-platnika-z-axcess-32bit-do-mssql-server-2014 znalazłem informację że po Migracji Płatnik Access na SQL należy usunąć ograniczenia dotyczące zerowej długości wszystkich pól. Operację tą można wykonać korzystając z SQL Management Studio.
Dlatego proponuję użyć poniższego skryptu:
SELECT
CONCAT('ALTER TABLE [', CONSTRAINT_CATALOG, '].[', TABLE_SCHEMA, '].[', TABLE_NAME, '] DROP CONSTRAINT [', CONSTRAINT_NAME, '];')
FROM
[PLATNIK].[INFORMATION_SCHEMA].[TABLE_CONSTRAINTS]
WHERE
CONSTRAINT_TYPE = 'CHECK';
W moim przypadku formuła ta nie zadziałała, aby rozwiązać ten problem, stworzyłem pustą bazę korzystając z programu Płatnik na serwerze MSSQL, zrobiłem migrację prze konwertowanej bazy Płatnik do nowo utworzonej bazy danych.
PS. „wykonać konwersję stopniowo do najwyższej wersji SQL” – bazę z SQL 2012 wgrywam do SQL 2019 i wszystko działa, może to kwestia Compatibility level, a może przy SQL 2000 – 2005 trzeba było tak kombinować.
„potrzebny jest 32 bitowy system operacyjny żeby zainstalować 32 bitowy serwer SQL” – nie zgodzę się, 32-bitowy SQL 2012 Express działa mi w tej chwili na 64-bitowym Windowsie 11…
Co do dalszej części instrukcji – to dzięki, też próbowałem sił z SSMA, ale poddałem się jak się okazało że trzeba coś więcej kombinować. Pisałem też do ZUSu na cot@zus.pl ale dostałem odpowiedź że „nie da się” xD
Wykonałem kilka migracji powyższym sposobem, jeżeli jest taka potrzeba proszę o kontakt.