Migrate Applications from SQL Server Databases to Autonomous Database
You can migrate SQL statements from SQL Server to Oracle SQL and run the statements on Autonomous Database.
- Translate SQL Server Statements to Oracle SQL
You can translate SQL statements written in SQL Server to Oracle SQL and run the translated statements on Autonomous Database. - Run SQL Server Statements in Autonomous Database
You can interactively translate and run SQL Server statements in your Autonomous Database. - Migrate SQL Server Files to Oracle SQL
You can migrate a file containing SQL Server statements to a file containing Oracle SQL statements. - Limitations for Migration and Translation of SQL Server Statements to Oracle SQL
This section summarizes the limitations for migrating SQL statements from SQL Server to Oracle SQL.
Parent topic: Migrate Applications from Non-Oracle SQL to Oracle SQL
Translate SQL Server Statements to Oracle SQL
You can translate SQL statements written in SQL Server to Oracle SQL and run the translated statements on Autonomous Database.
Use DBMS_CLOUD_MIGRATION.MIGRATE_SQL
to translate a SQL Server statement to Oracle SQL. There are procedure and function variants of DBMS_CLOUD_MIGRATION.MIGRATE_SQL
.
Migrate SQL Server Statement to Oracle SQL with MIGRATE_SQL Procedure
The following example accepts the SQL statement written in SQL Server as input, translates the statement to Oracle SQL, assigns the translated SQL statement to output_sql_result
, and prints the result:
SET SERVEROUTPUT ON
declare output_sql_result CLOB;
BEGIN
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
original_sql => 'CREATE TABLE [dbo].[movie] ([film_id] [int], [title] [varchar](20));',
output_sql => output_sql_result,
source_db => 'SQLSERVER');
DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;
/
Output
–-------------------------------------------------------------
SELECT e.employee_id, e.last_name, e.salary FROM employees e;
The original_sql
parameter specifies the SQL Server SQL statement.
The output_sql
parameter stores the translated SQL.
The source_db
parameter specifies the SQL Server database.
See MIGRATE_SQL Procedure and Function for more information.
Migrate SQL Server Statement to Oracle SQL with MIGRATE_SQL Function
The following example shows the DBMS_CLOUD_MIGRATION.MIGRATE_SQL
function within a SELECT
statement. The function input is a SQL Server statement and the function returns the translated statement in Oracle SQL:
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL
(
'CREATE TABLE [dbo].[movie] ([film_id] [int], [title] [varchar](20));','SQLSERVER') AS OUTPUT
FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
Use the SQLSERVER
parameter to translate from Microsoft SQL Server.
See MIGRATE_SQL Procedure and Function for more information.
Notes for running DBMS_CLOUD_MIGRATION.MIGRATE_SQL
:
-
You may encounter an error during the translation if the input SQL statement is not supported in Oracle SQL. See Limitations for Migration and Translation of SQL Server Statements to Oracle SQL for more information.
-
The
DBMS_CLOUD_MIGRATION.MIGRATE_SQL
subprograms only accept one SQL statement as input. So, only a single SQL statement can be translated per call.
Run SQL Server Statements in Autonomous Database
You can interactively translate and run SQL Server statements in your Autonomous Database.
Use the ENABLE_TRANSLATION
procedure to enable real-time translation of SQL statements written in SQL Server. After you enable translation in a session, non-Oracle SQL statements are automatically translated and run as Oracle SQL statements, and you can see the results.
ENABLE_TRANSLATION
you can interactively do the following in a session:
-
Create the tables. For example, create the tables
MOVIE
andINVENTORY
. -
Insert data into tables.
-
Query tables.
-
Perform JOIN operations on tables. For example, you can perform a left outer join on tables.
To enable translation with SQL Server statements and run commands:
You can query the V$MAPPED_SQL
view to list the SQL Server statements that are translated and mapped in memory to Oracle SQL statements.
For example:
SELECT v.*
FROM v$mapped_sql v, dba_objects o
WHERE v.sql_translation_profile_id = o.object_id
AND o.object_name = 'SQLSERVER'
AND o.object_type = 'TRANSLATION PROFILE';
See V$MAPPED_SQL for more information.
Migrate SQL Server Files to Oracle SQL
You can migrate a file containing SQL Server statements to a file containing Oracle SQL statements.
The DBMS_CLOUD_MIGRATION.MIGRATE_FILE
procedure translates SQL statements in a SQL Server file in Object Storage and generates a new file containing Oracle SQL.
As a prerequisite, upload one or more SQL Server files with a .sql
extension to a location on Object Storage. The following examples use the file mssqltest.sql
that is uploaded to Object Storage. See Put data into object storage for more information.
To migrate SQL Server files to Oracle SQL:
Run the following query to view the content of the mssqltest_oracle.sql
file:
SELECT UTL_RAW.CAST_TO_VARCHAR2 (DBMS_CLOUD.GET_OBJECT(
credential_name => 'OCI$RESOURCE_PRINCIPAL',
object_uri => 'https://objectstorage.region.oraclecloud.com/n/namespace/b/bucket/o/files'))
FROM dual;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_CLOUD.GET_OBJECT(CREDENTIAL_NAME=>'CRED1',OBJECT_U
--------------------------------------------------------------------------------
DROP TABLE movie;
CREATE TABLE movie (film_id NUMBER(10), title VARCHAR2(20));
INSERT INTO movie (film_id, title) VALUES (123, 'Tangled');
INSERT INTO movie (film_id, title) VALUES (234, 'Frozen');
CREATE TABLE inventory(film_id NUMBER(10), inventory_id NUMBER(10));
INSERT INTO inventory(film_id, inventory_id) VALUES (123, 223);
INSERT INTO inventory(film_id, inventory_id) VALUES (234, 334);
SELECT * FROM movie;
SELECT * FROM inventory;
SELECT m.film_id, m.title, inventory_id FROM movie m LEFT JOIN inventory ON inventory.film_id = m.film_id;
Alternatively, if you create a credential instead of the resource principal,
OCI$RESOURCE_PRINCIPAL
, specify the credential name in the
credential_name
parameter.
See GET_OBJECT Procedure and Function for more information.
Limitations for Migration and Translation of SQL Server Statements to Oracle SQL
This section summarizes the limitations for migrating SQL statements from SQL Server to Oracle SQL.
-
ISJSON()
-
OPENJSON()