Oracle and SQL Server are very different both from an administration and database usage stance.
Database Usage
Get ready to spend quite a bit of time porting. Some of the issues off the top of my head:
PL/SQL vs. T-SQL
The languages themselves are different enough to require significant porting effort for your scripts and stored procedures. This ranges from things like different concatenation operators (||
vs. +
), to changes in function names and subtleties (NVL
vs. COALESCE
), to conceptual differences (exception handling, case-sensitivity). Some other examples:
Cursors vs. temp tables
Most of the things that you did in Oracle using cursors are done in SQL Server using temporary tables.
Sequences vs. Identities
They are mostly equivalent, but you'll have to change the syntax of any procedures using them.
Database Administration
They mostly have the same features, sometimes under different names with varying side-effects. Some highlights:
- Data (un)loading (data pump or sql*loader or exp/imp vs. DTS or bcp)
- Data dictionaries (DBA_* vs. INFORMATION_SCHEMA)
- Transaction log settings (Archive logging vs. Recovery Model)
- Table types (Index Organized vs. clustered indexes)
- Locking mechanisms (reads don't lock in Oracle, not so in SQL server)
In short, there's a decent sized learning curve when going from Oracle to SQL Server (or vice-versa). Feel free to add to this list.