安裝和配置Microsoft SQL Server
了解了Oracle和SQL Server之間基本結構上的差異以後
Query Analyzer將用來運行下面的腳本
使用Windows NT基於軟件的RAID或者基於硬件的RAID第五級來創建一個足夠放下你的所有數據的邏輯驅動器
對空間的估算可以通過計算被Oracle系統
使用Windows NT基於軟件的RAID或者基於硬件的RAID第一級創建一個第二邏輯驅動器來放事務日志
器的大小起碼應該和在線恢復以及後滾表空間的總的大小一致
使用SQL Server Enterprise Manager創建一個和Oracle應用程序表空間名字一樣的數據庫
序使用的數據庫名字叫做USER_DB)標明文件位置
建的磁盤位置一致
會自動為你分配的
創建SQL Server登錄賬號
EXEC SP_ADDLOGIN STUDENT_ADMIN
EXEC SP_ADDLOGIN DEPT_ADMIN
EXEC SP_ADDLOGIN ENDUSER
GO
為數據庫添加角色
EXEC SP_ADDROLE DATA_ADMIN
EXEC SP_ADDROLE USER_LOGON
GO
為角色授予許可
CREATE PROCEDURE TO DATA_ADMIN
GO
增加作為數據庫用戶賬號的登錄賬號
EXEC SP_ADDUSER ENDUSER
EXEC SP_ADDUSER DEPT_ADMIN
EXEC SP_ADDUSER STUDENT_ADMIN
GO
定義數據庫對象
Oracle數據庫對象(表
庫都基本遵循SQL
的表
數據庫對象的某些不同之處
類別 Microsoft SQL Server Oracle
列數
行尺寸
raw)
最大行數 無限制 無限制
BLOB類型存儲 行中存儲一個
行的結尾
分簇表索引 每表一個 每表一個(index
未分簇的表索引 每表
在單一索引中的最大索引列數
索引中列值的最大長度
表名約定 [[[server
table_name [schema
視圖名約定 [[[server
table_name [schema
索引名約定 [[[server
table_name [schema
假設你是從一個Oracle腳本或者程序開始的
者程序並且進行如下修改
Oratable
確保數據庫對象標識遵循Microsoft SQL Server命名法則
修改數據存儲參數使之能在SQL Server下工作
修改Oracle約束定義使之能在SQL Server中工作
CASCADE語句
修改CREATE INDEX語句以利用分簇的索引
使用數據轉換服務來創建新的CREATE TABLE語句
Server數據類型上的
清除所有的CREATE SEQUENCE語句
如果需要的話
清除所有對同義字的引用
評估對Microsoft SQL Server臨時表的使用和其在你的應用程序中的用處
把所有的Oracle的CREATE TABLE…AS SELECT命令改為SQL Server的SELECT…INTO語句
評估潛在的對用戶定義規則
數據對象標識符
下表比較了Oracle和Microsoft SQL Server是如何處理對象標識符的
Server上時
Oracle Microsoft SQL
數據庫名稱
數據庫連接名稱
臨時表名稱
標識符的名稱必須用
數字字符
如果標識符用空格開頭
如果一個對象用下面這些字符開頭
@ 則表明該對象是一個本地變量
# 則該對象是一個本地臨時對象
## 則該對象是一個全局臨時對象
表空間名必須唯一
標識符名在用戶賬號(計劃
列名在表和視圖范圍內必須唯一
索引名在用戶賬號(Schema)范圍內必須唯一
修飾表名
當訪問存在於你的用戶賬號中的表時
中的表就需要把該計劃的名字作為前綴加到表名上
更高的位置透明度
涉及到表時
庫中用同一個名字創建一個表
用……訪問一個表 Oracle Microsoft SQL Server
你的用戶賬號 SELECT *
FROM STUDENT SELECT * FROM USER_DB
ADMIN
其他模式(schema) SELECT * FROM STUDENT_ADMIN
ADMIN
這是一些為Microsoft SQL Server表和視圖命名的指導方針
使用數據庫名字和用戶名字是可選的
當前數據庫中以當前用戶帳號搜索該表
同樣名字的對象
同一個SQL Server登錄賬號可以在多個數據庫中擁有同樣名字的表
象
Server登錄名
同時
USER_DB
USER_DB
USER_DB
OTHER_DB
因此
也包含在引用中
SQL Server的每個連接都有一個當前數據庫上下文
景
一個用戶
STUDENT表
ENDUSER
還是找不到該表
如果另一個用戶
另外
如果被引用的表在另一個數據庫中
ENDUSER
可以在數據庫和表名之間加兩個點號來省略對象的所有者名
From:http://tw.wingwit.com/Article/program/Oracle/201311/18155.html