---
title: "SQL Server naar Oracle migreren in je browser"
description: "Migreer een SQL Server-database naar Oracle: 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-oracle
last_updated: 2026-10-15
---

# SQL Server naar Oracle 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 Oracle-script met dezelfde tabellen, sleutels, indexen en data. Elke waarde die Oracle niet ongewijzigd kan bevatten, en elk object dat het niet overneemt, staat in het rapport.

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

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

## Wat er verandert van SQL Server naar Oracle

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 Oracle | Rapportregel |
| --- | --- | --- |
| bit | NUMBER(1) met een CHECK op 0 en 1 |  |
| char(n), varchar(n), nchar(n), nvarchar(n) | VARCHAR2(n CHAR), in tekens geteld |  |
| varchar(max), nvarchar(max), text, ntext | VARCHAR2(4000 CHAR) als elke waarde in 4000 bytes past, anders CLOB | `text_as_lob` |
| empty strings and empty binary values | NULL | `empty_string_null` |
| decimal(p,s), money, smallmoney | NUMBER(p,s); money als NUMBER(19,4) |  |
| datetime, datetime2, smalldatetime | TIMESTAMP(p) |  |
| datetimeoffset | TIMESTAMP WITH TIME ZONE, met de offset van elke waarde |  |
| time | INTERVAL DAY TO SECOND vanaf middernacht |  |
| dates that aren't valid | NULL | `date_out_of_range` |
| json (SQL Server 2025) | CLOB |  |
| uniqueidentifier | VARCHAR2(36) |  |
| binary, varbinary, image | RAW(n) en BLOB |  |
| geometry, geography | BLOB met de eigen bytes van SQL Server | `spatial_as_native` |
| rowversion, timestamp | BLOB, leeg | `rowversion_empty` |
| xml, sql_variant, hierarchyid, vector | VARCHAR2 of CLOB met de tekst van elke waarde | `type_replaced` |
| collations that ignore case (_CI_) | exacte vergelijking | `case_insensitive_collation` |
| IDENTITY | GENERATED BY DEFAULT ON NULL AS IDENTITY, verdergaand na het hoogste id |  |
| CREATE SEQUENCE | CREATE SEQUENCE met dezelfde opties |  |
| computed columns | virtuele kolommen | `stored_as_virtual` |
| computed columns with functions Oracle lacks | een gewone kolom | `generated_not_translated` |
| defaults with functions Oracle lacks, and NEXT VALUE FOR | geen standaardwaarde | `default_not_translated` |
| CHECK constraints | vertaald |  |
| CHECK constraints with functions Oracle lacks | niet aangemaakt | `check_skipped` |
| CHECK constraints added WITH NOCHECK or disabled | niet aangemaakt | `check_not_enforced` |
| filtered and columnstore indexes, and indexes on CLOB columns | niet aangemaakt | `index_skipped` |
| foreign keys | na de data ENABLE NOVALIDATE, daarna gevalideerd met een waarschuwing bij wezen |  |
| ON UPDATE CASCADE, SET NULL or SET DEFAULT; ON DELETE SET DEFAULT | weggelaten | `foreign_key_action_unsupported` |
| names over 128 bytes | ingekort | `name_shortened` |
| 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` |
| schemas | één schema, tabellen met de naam van hun schema ervoor | `schemas_merged` |
| 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 | CLOB | `unknown_type` |
| NUL characters in text | behouden |  |
| 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 Oracle 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
NLS_LANG=.AL32UTF8 sqlplus -S -L user@//localhost/mydb @sql_server.oracle.sql
```

Refererende sleutels worden toegevoegd met ENABLE NOVALIDATE, zodat nieuwe rijen meteen worden gecontroleerd, en daarna gevalideerd. Verwijst een oude rij naar een rij die niet bestaat, dan vertelt het script welke constraint het is en laat het die ongevalideerd, in plaats van halverwege te mislukken.

Voer bij een grote dump SQL*Plus uit op dezelfde machine als de database. Het script commit elke 100 rijen. De gebruiker die het uitvoert, heeft CREATE TABLE, CREATE SEQUENCE, CREATE TRIGGER en CREATE PROCEDURE nodig, en quota op zijn tablespace.

## 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 Oracle.

## Vragen over SQL Server naar Oracle

### 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 NUMBER(1), datetime2 TIMESTAMP met elk cijfer, datetimeoffset TIMESTAMP WITH TIME ZONE met zijn offset, en nvarchar(max) CLOB als de waarden niet in een VARCHAR2 passen. Lege strings worden NULL, zoals Oracle ze opslaat, en het rapport telt ze.

### 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 Oracle-versies laadt het script?

Oracle 19c en later. Elk testscript laadt op 21c en 23ai en stopt bij de eerste fout als er iets misgaat.

## Vanuit SQL Server

- [SQL Server naar PostgreSQL](https://intosql.com/nl/sql-server-naar-postgresql)
- [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)

## Naar Oracle

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

## Handleiding en elke combinatie

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