---
title: "SQL Server naar PostgreSQL migreren in je browser"
description: "Migreer een SQL Server-database naar PostgreSQL: zet het script van SSMS om naar een script met dezelfde tabellen, sleutels en data, en een rapport van elke wijziging."
canonical: https://intosql.com/nl/sql-server-naar-postgresql
last_updated: 2026-10-15
---

# SQL Server naar PostgreSQL migreren in je browser

Zet het script neer dat Generate Scripts van SSMS met schema en data schrijft, als .sql of .sql.gz, UTF-16 of UTF-8, en download een PostgreSQL-script met dezelfde tabellen, sleutels, indexen en data. Elke waarde die PostgreSQL niet ongewijzigd kan bevatten, en elk object dat het niet overneemt, staat in het rapport.

[Migratiehandleiding SQL Server naar PostgreSQL](https://intosql.com/docs/migrations/sql-server-to-postgresql)

[Datatypen van SQL Server naar PostgreSQL](https://intosql.com/docs/types/sql-server-to-postgresql)

## Wat er verandert van SQL Server naar PostgreSQL

Elke rij is een regel die de converter toepast, met de rapportregel die hij schrijft als de regel iets in je data verandert.

| In SQL Server | In PostgreSQL | Rapportregel |
| --- | --- | --- |
| bit | boolean |  |
| tinyint | smallint met een CHECK dat hij niet negatief is | `unsigned_widened` |
| char(n), varchar(n), nchar(n), nvarchar(n), varchar(max), text | varchar(n) en text |  |
| decimal(p,s), money, smallmoney | numeric(p,s); money als numeric(19,4) |  |
| datetime, datetime2, smalldatetime | timestamp(p) |  |
| datetime2(7), time(7) and datetimeoffset(7) | zes cijfers van een seconde, het zevende afgekapt | `fraction_cut` |
| datetimeoffset | timestamptz, dezelfde momenten |  |
| time | time(p) |  |
| json (SQL Server 2025) | jsonb |  |
| uniqueidentifier | uuid |  |
| binary, varbinary, image | bytea |  |
| geometry, geography | bytea met de eigen bytes van SQL Server | `spatial_as_native` |
| rowversion, timestamp | bytea, leeg | `rowversion_empty` |
| sql_variant, hierarchyid, vector | text | `type_replaced` |
| collations that ignore case (_CI_) | exacte vergelijking | `case_insensitive_collation` |
| IDENTITY | GENERATED BY DEFAULT AS IDENTITY, verdergaand na het hoogste id |  |
| CREATE SEQUENCE | CREATE SEQUENCE met dezelfde opties |  |
| computed columns | gegenereerde kolommen, STORED | `virtual_as_stored` |
| computed columns with functions PostgreSQL lacks | een gewone kolom | `generated_not_translated` |
| defaults with functions PostgreSQL lacks, and NEXT VALUE FOR | geen standaardwaarde | `default_not_translated` |
| CHECK constraints | vertaald |  |
| CHECK constraints with functions PostgreSQL lacks | niet aangemaakt | `check_skipped` |
| CHECK constraints added WITH NOCHECK or disabled | niet aangemaakt | `check_not_enforced` |
| filtered and columnstore indexes | niet aangemaakt | `index_skipped` |
| foreign keys | refererende sleutels, na de rijen |  |
| foreign keys to tables the dump doesn't create | niet aangemaakt | `foreign_key_skipped` |
| tables on a partition scheme | één tabel met de rijen van elke partitie | `partitions_dropped` |
| temporal tables (SYSTEM_VERSIONING) | twee tabellen: de huidige rijen en de geschiedenis | `system_versioning_dropped` |
| NOT NULL columns with values that become NULL | NOT NULL weggelaten | `not_null_relaxed` |
| views, functions, procedures, triggers, synonyms, types and partition functions | vermeld in het rapport | `not_converted_objects` |
| scripts without CREATE TABLE (data only) | typen afgeleid uit de waarden | `no_schema` |
| expressions in INSERT values | NULL | `expression_value` |
| types IntoSQL doesn't know | text | `unknown_type` |
| dates that aren't valid | NULL | `date_out_of_range` |
| NUL characters in text | verwijderd | `nul_removed` |
| text that isn't valid in its encoding | de foute bytes als het vervangingsteken | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | ongewijzigd gekopieerd | `mojibake_suspected` |

## Het script in PostgreSQL laden

Het script maakt de tabellen aan, kopieert de rijen en voegt daarna sleutels, indexen en refererende sleutels toe, zodat het snel laadt en bij de eerste fout stopt.

```shell
psql -v ON_ERROR_STOP=1 -d mydb -f sql_server.postgresql.sql
```

Refererende sleutels worden toegevoegd als NOT VALID en daarna gevalideerd. Verwijst een rij naar een rij die niet bestaat, dan vertelt het script je welke constraint het is, in plaats van halverwege te mislukken.

Maak voor een grote dump eerst de database aan en voer het script uit met psql vanaf dezelfde machine als de server.

IntoSQL Pro laadt het bestand rechtstreeks in PostgreSQL vanuit de desktopapp of de opdrachtregel, zonder een script te schrijven.

## Een dump van SQL Server maken voor het beste resultaat

De converter leest wat de dump bevat. Met deze opties blijft er meer van je data in staan:

- Klik in SSMS met rechts op de database, kies Tasks, Generate Scripts en selecteer de tabellen. dbatools, mssql-scripter en andere tools op basis van dezelfde bibliotheek schrijven hetzelfde script.
- Zet onder Advanced Types of data to script op Schema and data. Een script van alleen het schema bevat tabellen zonder rijen.
- Sla het op als Unicode, de standaard van SSMS, of als UTF-8: beide worden op dezelfde manier gelezen, en gzip werkt ook.

## Wat niet wordt geconverteerd

Weergaven, functies, procedures, triggers, synoniemen, regels en beveiligingsbeleid zijn geschreven in T-SQL. Ze staan op naam in het rapport en worden nooit stilletjes weggelaten, zodat je ze kunt herschrijven voor PostgreSQL.

## Vragen over SQL Server naar PostgreSQL

### Wordt mijn dump geüpload?

Nee. De converter draait in je browser en leest de dump in delen van je schijf, dus hij verlaat je computer nooit. De desktopapp en de opdrachtregel converteren ook op je computer.

### Hoe groot mag de dump zijn?

De converter houdt nooit de hele dump in het geheugen: hij leest het bestand twee keer, in bereiken, en schrijft het script gaandeweg. Dumps van meerdere gigabytes worden geconverteerd in de browser, in de desktopapp en met de opdrachtregel.

### Leest het het UTF-16-bestand dat SSMS opslaat?

Ja. SSMS slaat scripts standaard op als UTF-16, en de converter leest UTF-16 en UTF-8 even goed, met of zonder gzip, met GO tussen batches.

### Van welke SQL Server-versies kan het script komen?

Scripts die SSMS, dbatools of mssql-scripter schrijven vanaf SQL Server 2017. Elk testscript komt van SQL Server 2017, 2022 en 2025 en wordt cel voor cel met zijn bron vergeleken.

### Blijven IDENTITY-waarden behouden?

Ja. IDENTITY-kolommen worden identity-kolommen, elke rij behoudt zijn id en het volgende id gaat verder na het hoogste. Sequences worden aangemaakt met dezelfde opties.

### Wat gebeurt er met money, datetimeoffset en andere SQL Server-typen?

bit wordt boolean, money numeric(19,4), uniqueidentifier uuid, xml xml en datetimeoffset timestamptz. datetime2 behoudt zes cijfers van een seconde, het zevende valt weg. Kolommen die hoofdletters negeerden, vergelijken exact, en het rapport zegt welke.

### En procedures, triggers en weergaven?

Ze staan op naam in het rapport en worden niet geconverteerd, omdat elke database ze in een eigen taal schrijft.

### Op welke PostgreSQL-versies laadt het script?

PostgreSQL 13 tot en met 18. Hetzelfde script laadt op elk ervan en stopt bij de eerste fout als er iets misgaat.

## Vanuit SQL Server

- [SQL Server naar MySQL](https://intosql.com/nl/sql-server-naar-mysql)
- [SQL Server naar MariaDB](https://intosql.com/nl/sql-server-naar-mariadb)
- [SQL Server naar SQLite](https://intosql.com/nl/sql-server-naar-sqlite)
- [SQL Server naar SQL Server](https://intosql.com/nl/sql-server-naar-sql-server)
- [SQL Server naar Oracle](https://intosql.com/nl/sql-server-naar-oracle)

## Naar PostgreSQL

- [MySQL naar PostgreSQL](https://intosql.com/nl/mysql-naar-postgresql)
- [MariaDB naar PostgreSQL](https://intosql.com/nl/mariadb-naar-postgresql)
- [PostgreSQL naar PostgreSQL](https://intosql.com/nl/postgresql-naar-postgresql)
- [SQLite naar PostgreSQL](https://intosql.com/nl/sqlite-naar-postgresql)
- [Oracle naar PostgreSQL](https://intosql.com/nl/oracle-naar-postgresql)

## Handleiding en elke combinatie

- [PostgreSQL naar SQL Server](https://intosql.com/nl/postgresql-naar-sql-server)
- [Migratiehandleiding SQL Server naar PostgreSQL](https://intosql.com/docs/migrations/sql-server-to-postgresql)
- [Datatypen van SQL Server naar PostgreSQL](https://intosql.com/docs/types/sql-server-to-postgresql)
- [Elke databasecombinatie](https://intosql.com/nl/databasemigratie)
