You are on page 1of 7

Differences Between SQL Server and Oracle

Oracle and MS SQL Server


Oracle runs on many platforms, SQL on Windows only In Oracle EVERYTHING is a transaction and it is not permanent until you COMMIT. In SQL Server, there is (by default) no transaction control. An error half way through a stored procedure WILL NOT ROLLBACK the DDL in previous steps.and setup (Not difficult, but very UNIX-like for Windows users)

SQL is #1 in Cost/Performance and overall Performance, although Oracle


will refute that Replication is much easier in SQL (I have been at clients where even the Oracle consultant couldn't get it working w/oracle) Failover support in SQL is much, much easier JDBC support is much better in Oracle, although Microsoft is working on it ODBC support in both

Oracle and MS SQL Server


SQL is ANSI-SQL '92 compliant, making it easier to convert to another ANSI compliant database, theoretically anyway (truth is every database has proprietary extensions). Oracle is generally more proprietary and their main goal is to keep their customers locked-in. SQL natively supports ODBC, OLEDB, XML, XML Query, XML updates. Oracle natively supports proprietary connections, JDBC. Oracle requires add-ons for transaction monitors, failover, etc. SQL has everything built-in SQL Analysis Services is included (A very powerful OLAP server). For Oracle it is a separate purchase.

Other Conceptual Differences


SQL Server
Database owner, DBO Group/Role Non-unique index T-SQL stored procedure { Trigger Compex rule Column identity property
Oracle
Schema Role Index PL/SQL procedure PL/SQL function BEFORE trigger After trigger Sequence

Only in Oracle
Clusters Packages

Triggers for each row


Synonyms

Snapshots

Data Type Differences


SQL Server
INTEGER

Oracle
NUMBER(10)

SMALLINT
TINYINT REAL

NUMBER(6)
NUMBER(3) FLOAT

FLOAT
BIT VARCHAR(n) TEXT IMAGE BINARY(n)

FLOAT
NUMBER(1) VARCHAR2(n) CLOB BLOB RAW(n) or BLOB

Data Type Differences


SQL Server
VARBINARY DATETIME SMALL-DATETIME MONEY NCHAR(n) NVARCHAR(n) SMALLMONEY TIMESTAMP SYSNAME

Oracle
RAW(n) or BLOB DATE DATE NUMBER(19,4) CHAR(n*2) VARCHAR(n*2) NUMBER(10,4) NUMBER VARCHAR2(30), VARCHAR2(128)

You might also like