A1Access Migrator moves an entire SQL Server database to PostgreSQL — schema, data, indexes, foreign keys, and a full inventory of triggers and stored procedures — in four guided phases. Verified on 8.8 million rows.
Smart fallbacks for the cases real databases throw at you, full inventory of what couldn't auto-port, and a verifier you can trust.
T-SQL types, defaults (SYSUTCDATETIME, NEWID, CONVERT, identity), computed columns, and check constraints all rewritten for PostgreSQL.
~10× faster than INSERTs. Foreign-key checks deferred during load; identity sequences reset to MAX(id) after.
btree row-size limit hit? Single-column non-unique indexes auto-retry as USING HASH. The rest get a workbook with options.
3,000+ T-SQL objects captured into _migration_meta.objects with the original body preserved for manual port.
SQL Server dbo maps to public; other schemas stay namespaced. Duplicate names across schemas are handled correctly.
Source COUNT_BIG(*) compared to target COUNT(*) table-by-table. Zero tolerance for silent mismatches.
WPF wizard for one-off migrations, a1mig CLI for CI/CD. Both share the same engine and config file.
Connections you provide; nothing leaves your network. The DLL is HMAC-watermarked so you can verify integrity at any time.
The wizard runs them in order; the CLI runs each on demand. Every phase logs its own outcome.
Drop + create the target database, apply all CREATE TABLEs. No indexes, no FKs yet — keeps the door open for fast bulk copy.
Tables sorted by FK dependency. session_replication_role = replica defers FK checks. COPY ... FROM STDIN (FORMAT BINARY) per table.
Indexes, foreign keys, check constraints — with smart hash-fallback for oversized btrees. Anything that can't apply auto goes to a review workbook.
Triggers, procs, views, functions captured to _migration_meta.objects. Then row counts compared source vs target.
Beyond the migrated schema, a working inventory you can query.
-- See everything that needs a manual port:
SELECT object_type, schema_name, object_name, parent_table, port_status
FROM _migration_meta.unported
ORDER BY object_type, schema_name, object_name;
-- Mark one done after porting:
UPDATE _migration_meta.objects
SET port_status = 'DONE',
pg_definition = $$ ... your PL/pgSQL here ... $$
WHERE schema_name = 'public' AND object_name = 'tr_audit_insert';
Why pick A1Access Migrator over the usual one-off scripts or generic SaaS tools.
| Capability | Hand-rolled scripts | SaaS migration tool | A1Access Migrator |
|---|---|---|---|
| SQL Server → PostgreSQL DDL conversion | manual | yes | yes |
| Binary COPY data transfer | no | yes | yes |
| Smart hash-fallback for oversized indexes | no | often missing | yes |
| Trigger / proc / view inventory on target | no | usually skipped | _migration_meta |
| Row-count verifier | no | sometimes | yes |
| Runs offline; data never leaves your network | yes | no | yes |
| Wizard + CLI sharing one engine | no | UI only | yes |
Download the free 30-day trial and migrate up to 1 GB. No credit card.
⬇ Download for WindowsA1Access Migrator ينقل قاعدة بيانات SQL Server كاملة إلى PostgreSQL — schema، بيانات، indexes، foreign keys، وفهرس كامل لكل الـ triggers والـ stored procedures — في 4 مراحل واضحة. مُختبر على 8.8 مليون سجل.
fallbacks ذكية للحالات اللي بتقابلك في قواعد البيانات الحقيقية، فهرس كامل لكل اللي ما اتنقلش تلقائياً، ومُحقّق تثق فيه.
أنواع T-SQL، defaults (SYSUTCDATETIME، NEWID، CONVERT، identity)، الأعمدة المحسوبة، و check constraints كلهم بيتعاد كتابتهم لـ PostgreSQL.
أسرع 10× تقريباً من INSERT. الـ FKs مؤجلة وقت التحميل، والـ identity sequences تترجع لـ MAX(id) بعد كده.
btree حجمه فات الحد؟ الـ indexes single-column non-unique بتتحول تلقائياً لـ USING HASH. الباقي بيدخل workbook بخيارات.
+3,000 object T-SQL بيتحفظوا في _migration_meta.objects مع الكود الأصلي للـ manual port.
الـ dbo بيتحول لـ public، والباقي بيفضلوا namespace خاص. الأسماء المتكررة في schemas مختلفة بتتعالج صح.
الـ source COUNT_BIG(*) بيتقارن بـ target COUNT(*) جدول-بجدول. zero-tolerance للمفقودين.
WPF wizard للميجريشن لمرة واحدة، و a1mig CLI للـ CI/CD. الاتنين بيستخدموا نفس الـ engine.
الاتصالات تحط أنت، مفيش بيانات تطلع من شبكتك. الـ DLL موقّع بـ HMAC، تقدر تتحقق من سلامته في أي وقت.
الـ wizard بيشغّلهم بترتيب، والـ CLI تقدر تشغل أي مرحلة لوحدها.
إعادة إنشاء قاعدة الـ target، تطبيق كل CREATE TABLE. بدون indexes أو FKs لسة — عشان التحميل يكون سريع.
الجداول مرتبة حسب FK. session_replication_role = replica بيؤجل الـ FK checks. COPY ... FORMAT BINARY لكل جدول.
indexes، foreign keys، check constraints — مع hash fallback للـ btrees الكبيرة. اللي ما اتطبّقش بيدخل review workbook.
Triggers، procs، views، functions بيتحفظوا في _migration_meta.objects. وبعدها مقارنة row counts بين source و target.
نزّل النسخة التجريبية المجانية (30 يوم) وانقل حتى 1 جيجا. بدون بطاقة ائتمان.
⬇ نزّل لـ Windows