---
title: "Migracja Oracle do SQL Server w przeglądarce"
description: "Migruj bazę Oracle do SQL Server: zamień eksport z SQL Developer lub SQLcl w skrypt z tymi samymi tabelami, kluczami i danymi oraz raportem każdej zmiany."
canonical: https://intosql.com/pl/oracle-do-sql-server
last_updated: 2026-10-15
---

# Migracja Oracle do SQL Server w przeglądarce

Upuść plik .sql zapisany przez Database Export w SQL Developer lub przez SQLcl, z tabelami i instrukcjami Insert, i pobierz skrypt SQL Server z tymi samymi tabelami, kluczami, indeksami i danymi. Każda wartość, której SQL Server nie może przechować bez zmian, i każdy obiekt, którego nie przenosi, są wymienione w raporcie.

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

[Typy danych z Oracle do SQL Server](https://intosql.com/docs/types/oracle-to-sql-server)

## Co zmienia się między Oracle a SQL Server

Każdy wiersz to reguła stosowana przez konwerter, z wpisem, który dodaje do raportu, gdy reguła coś zmienia w twoich danych.

| W Oracle | W SQL Server | Wpis w raporcie |
| --- | --- | --- |
| BOOLEAN (23ai) | bit |  |
| VARCHAR2(n BYTE|CHAR), NVARCHAR2(n), CHAR(n), NCHAR(n), CLOB, NCLOB, LONG | nvarchar(n), nchar(n) i nvarchar(max) |  |
| VARCHAR2 and NVARCHAR2 past what the target's own types hold | nvarchar(2n) lub nvarchar(max) powyżej 4000 | `text_length_widened` |
| NUMBER, NUMBER(p,s), FLOAT(b) | decimal(p,s) lub bigint |  |
| INTERVAL YEAR TO MONTH, INTERVAL DAY TO SECOND | nvarchar(100) z tekstem Oracle, np. +01-06 | `type_replaced` |
| DATE, TIMESTAMP(p) | datetime2(p) |  |
| TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE | datetimeoffset z przesunięciem każdej wartości |  |
| JSON (21c), and CLOB holding JSON | nvarchar(max) |  |
| BLOB, RAW(n), LONG RAW | binary(n), varbinary(n) i varbinary(max) |  |
| ROWID, UROWID, XMLTYPE, SDO_GEOMETRY | nvarchar(max) oraz xml dla XMLTYPE |  |
| collations that ignore case (BINARY_CI) | to samo porównywanie w każdej kolumnie |  |
| identity columns, and a sequence a BEFORE INSERT trigger assigns | IDENTITY, kontynuowane po najwyższym id |  |
| identity columns the target can't count | zwykła liczba całkowita | `counter_dropped` |
| CREATE SEQUENCE | CREATE SEQUENCE z tymi samymi opcjami |  |
| virtual columns (GENERATED ALWAYS AS ... VIRTUAL) | kolumny obliczane |  |
| virtual columns with functions IntoSQL doesn't write, and the || operator | zwykła kolumna | `generated_not_translated` |
| defaults with functions IntoSQL doesn't write (SYS_GUID(), ||) | brak wartości domyślnej | `default_not_translated` |
| CHECK constraints | przetłumaczone |  |
| CHECK constraints with functions IntoSQL doesn't write | nie jest tworzone | `check_skipped` |
| CHECK constraints that are DISABLE or ENABLE NOVALIDATE | nie jest tworzone | `check_not_enforced` |
| function-based, bitmap and domain indexes | nie jest tworzone | `index_skipped` |
| foreign keys | po danych z WITH NOCHECK, potem sprawdzany z ostrzeżeniem o osieroconych wierszach |  |
| ON DELETE CASCADE that cascades in a cycle or along a second path | NO ACTION | `foreign_key_action_dropped` |
| foreign keys to tables the export doesn't create, and DISABLE or NOVALIDATE ones | nie jest tworzone | `foreign_key_skipped` |
| partitioned tables | jedna tabela z wierszami wszystkich partycji | `partitions_dropped` |
| NOT NULL columns with values that become NULL | NOT NULL usunięte | `not_null_relaxed` |
| views, synonyms, types, packages, procedures, functions and other triggers | wymienione w raporcie | `not_converted_objects` |
| exports without CREATE TABLE (data only) | typy odczytane z wartości | `no_schema` |
| expressions in INSERT values other than the ones exports write | NULL | `expression_value` |
| types IntoSQL doesn't know, and object types | nvarchar(max) | `unknown_type` |
| dates before year 1 and time zones given as region names | NULL | `date_out_of_range` |
| NaN and Infinity in BINARY_FLOAT and BINARY_DOUBLE | NULL | `invalid_value_null` |
| NUL characters in text | zachowane |  |
| text that isn't valid in its encoding | błędne bajty jako znak zastępczy | `invalid_utf8_replaced` |
| text decoded twice (Ã±) | skopiowane bez zmian | `mojibake_suspected` |

## Załaduj skrypt do SQL Server

Skrypt tworzy tabele, kopiuje wiersze, a potem dodaje klucze, indeksy i klucze obce, więc ładuje się szybko i zatrzymuje przy pierwszym błędzie.

```shell
sqlcmd -b -f 65001 -S localhost -d mydb -i oracle.sql_server.sql
```

Klucze obce są dodawane z WITH NOCHECK, a potem sprawdzane. Jeśli wiersz wskazuje na nieistniejący wiersz, skrypt podaje, którego ograniczenia to dotyczy, i zostawia je niesprawdzone, zamiast przerwać w połowie.

Przy dużym zrzucie uruchom sqlcmd na tej samej maszynie co serwer. Każda partia do 1000 wierszy jest zatwierdzana osobno, więc dziennik transakcji pozostaje mały.

## Jak zrobić zrzut Oracle dla najlepszego wyniku

Konwerter odczytuje to, co zawiera zrzut. Te opcje zachowują w nim więcej twoich danych:

- W SQL Developer wybierz Tools, Database Export, z DDL i formatem danych Insert. SQLcl zapisuje to samo z SET SQLFORMAT INSERT.
- Przed eksportem uruchom ALTER SESSION SET NLS_DATE_FORMAT = 'SYYYY-MM-DD HH24:MI:SS': domyślny format zapisuje daty bez godziny i stulecia.
- Plik .dmp z exp lub expdp jest binarny: zaimportuj go do bazy Oracle, np. Oracle Database Free w Dockerze, i wyeksportuj przez SQL Developer.

## Co nie jest konwertowane

Widoki, pakiety, procedury, funkcje, wyzwalacze, typy i synonimy są pisane w PL/SQL. Raport wymienia je z nazwy i nigdy nie pomija ich po cichu, więc możesz je przepisać dla SQL Server.

## Pytania o konwersję Oracle do SQL Server

### Czy mój zrzut jest wysyłany?

Nie. Konwerter działa w przeglądarce i odczytuje zrzut z dysku po kawałku, więc nigdy nie opuszcza on twojego komputera. Aplikacja na komputer i wiersz poleceń też konwertują na twoim komputerze.

### Jak duży może być zrzut?

Konwerter nigdy nie trzyma całego zrzutu w pamięci: czyta plik dwa razy, fragmentami, i zapisuje skrypt na bieżąco. Zrzuty wielogigabajtowe konwertują się w przeglądarce, w aplikacji na komputer i w wierszu poleceń.

### Czy mogę przekonwertować plik .dmp z exp lub expdp?

Nie bezpośrednio: Data Pump i oryginalny Export zapisują format binarny, który czyta tylko Oracle. Zaimportuj plik do dowolnej bazy Oracle (Oracle Database Free działa w Dockerze) i wyeksportuj go przez Database Export w SQL Developer lub przez SQLcl. Konwerter informuje o tym, gdy dostanie plik .dmp.

### Z jakich wersji Oracle może pochodzić eksport?

Eksporty z SQL Developer i SQLcl, z definicjami tabel z DBMS_METADATA, z Oracle od wersji 11g. Każdy testowy eksport pochodzi z Oracle 21c i 23ai, w sesjach amerykańskich, niemieckich i ISO, i jest porównywany ze źródłem komórka po komórce.

### Co dzieje się z NUMBER, DATE i innymi typami Oracle?

NUMBER staje się decimal lub bigint dla liczb całkowitych; DATE staje się datetime2(0) i zachowuje godzinę; tekst staje się nvarchar, porównywanym dokładnie jak w Oracle; CLOB nvarchar(max), BLOB varbinary(max). NaN i Infinity stają się NULL, a raport je liczy.

### Czy kolumny identity i sekwencje są zachowywane?

Tak. Kolumny identity stają się kolumnami IDENTITY i idą dalej po najwyższym id; sekwencje stają się sekwencjami SQL Server, a wartości domyślne, które z nich pobierają, nadal z nich pobierają.

### A pakiety PL/SQL, procedury i wyzwalacze?

Raport wymienia je z nazwy, ale nie są konwertowane, bo każda baza danych zapisuje je we własnym języku.

### Na jakich wersjach SQL Server ładuje się skrypt?

SQL Server od 2017 do 2025. Ten sam skrypt ładuje się na każdej z nich i zatrzymuje przy pierwszym błędzie, jeśli coś pójdzie nie tak.

## Z Oracle

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

## Do SQL Server

- [MySQL do SQL Server](https://intosql.com/pl/mysql-do-sql-server)
- [MariaDB do SQL Server](https://intosql.com/pl/mariadb-do-sql-server)
- [PostgreSQL do SQL Server](https://intosql.com/pl/postgresql-do-sql-server)
- [SQL Server do SQL Server](https://intosql.com/pl/sql-server-do-sql-server)
- [SQLite do SQL Server](https://intosql.com/pl/sqlite-do-sql-server)

## Przewodnik i każda para

- [SQL Server do Oracle](https://intosql.com/pl/sql-server-do-oracle)
- [Przewodnik migracji Oracle do SQL Server](https://intosql.com/docs/migrations/oracle-to-sql-server)
- [Typy danych z Oracle do SQL Server](https://intosql.com/docs/types/oracle-to-sql-server)
- [Każda para baz danych](https://intosql.com/pl/migracja-bazy-danych)
