Oracle 數據庫進程和緩沖(實例)。 SYSTEM 表空間包含一個集中系統類目,它可以由一個或多個數據文件構成。 其它由數據庫治理員 (DBA)(可選)定義的表空間,每個都由一個或多個數據文件構成。 兩個以上的聯機恢復日志。 歸檔恢復日志(可選)。 其它文件(控制文件、Init.ora、Config.ora 等)。 Microsoft® SQL Server™ 2000 數據庫提供了數據、應用程序和安全機制的邏輯分隔。一個 SQL Server 安裝(實例)可以支持多個數據庫。用 SQL Server 構建的應用程序可以用數據庫來邏輯分隔業務功能。一臺計算機上可以有多個 SQL Server 實例。每個 SQL Server 實例可以有多個數據庫。
每個 SQL Server 數據庫可以支持文件組,它提供了物理分布數據位置的能力。一個 SQL Server 文件組可以對含有單個 SQL Server 數據庫數據的操作系統文件進行分類,以簡化數據庫治理任務,比如備份。文件組是 SQL Server 數據庫的一個屬性,不能包含多于一個數據庫的操作系統文件,但一個數據庫可以包含一個以上的文件組。創建數據庫后,可以將文件組添加到數據庫。
假如您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
Microsoft SQL Server 還會默認安裝以下數據庫:
model 數據庫是所有新建用戶數據庫的模板。 tempdb 數據庫類似于 Oracle 臨時表空間,用于臨時工作存儲和排序操作。與 Oracle 臨時表空間不同,用戶可以創建臨時的表,當用戶登出時,這個表會被自動刪除。 msdb 數據庫支持 SQL Server 代理及其安排的作業、警報和復制信息。 提供的 pubs 和 Northwind 數據庫是培訓示例數據庫。 有關默認數據庫的具體信息,請參見 SQL Server 聯機圖書。
數據庫系統類目 每個 Oracle 數據庫都在一個中心系統類目和數據字典上運行,它位于 SYSTEM 表空間。每個 Microsoft SQL Server 2000 數據庫都維護自己的系統類目,它含有以下信息:
Microsoft SQL Server 2000 在數據庫級別使用文件組來控制表和索引的物理位置。文件組是一個或多個文件的邏輯容器,文件組中的數據按比例填充到屬于該文件組的所有文件中。
假如未定義且未使用文件組,數據庫對象則放到創建數據庫時隱式創建的一個默認文件組中。文件組答應您:
將大數據表分布到多個文件,從而提高 I/O 吞吐量。 存放與相應的表不同的文件索引,這也能提高 I/O 吞吐量和磁盤并發性能。 將 text、ntext 和 image 卷(大對象)存儲到獨立于數據表的單獨文件。 將數據庫對象置于特定的磁盤卷軸。 備份并恢復單個數據表和文件組中的一組表。 SQL Server 將文件格式化成稱作頁的內部單位。頁的大小是固定的 8,192 字節(8 KB)。頁被組織成擴展盤區,擴展盤區的固定大小是 8 個相鄰的頁。在 SQL Server 數據庫中創建表或索引時,它會在一個擴展盤區內被自動分配一個頁。當表或索引變大時,SQL Server 會自動為它分配屬于它的擴展盤區。與 Oracle 分配整個擴展盤區的方法相比,這種做法可以更有效地存儲較小的表和索引。
具體信息請參見 SQL Server 聯機圖書的“物理數據庫結構”。
數據條帶化 安裝的大多數 Microsoft SQL Server 不需要 Oracle 類型的數據段。SQL Server 的方法是,它能用基于硬件的 RAID 或基于軟件的 RAID(可從 Windows NT 磁盤治理實用程序或第三方獲得)更有效地分布數據(或叫做數據條帶化)。利用 RAID,您可以建立含有多個磁盤驅動器(但顯示為一個邏輯磁盤)的數據條帶集。假如在這個條帶集上創建數據庫文件,磁盤子系統會承擔跨多個磁盤分配 I/O 負載的任務。建議治理員用 RAID 將數據分布到多個物理磁盤。
Microsoft SQL Server 2000 也能執行自動數據恢復,它在每次啟動時檢查系統中的每個數據庫。它首先檢查 master 數據庫,并啟動恢復系統中所有其它數據庫的線程。自動恢復機制對每個 SQL Server 數據庫檢查事務日志。假如事務日志中有任何未授權的事務,則復原事務。然后恢復機制檢查事務日志中那些尚未寫入數據庫的授權事務。假如找到這樣的事務,它就重新執行事務(前滾)。
每個 SQL Server 事務日志都具有 Oracle 回滾數據段和 Oracle 聯機恢復日志的組合功能。每個數據庫都有自己的事務日志,它記錄了數據庫的所有更改,并且由該數據庫的所有用戶共享。當某項事務開始,數據被修改的時候,日志中記錄下一個 BEGIN TRANSACTION 事件(和修改事件)。在自動恢復期間要使用這個事件來判定事務的起始點。接收到每個數據修改聲明時,更改情況先寫入事務日志,然后再寫入數據庫本身。SQL Server 有一個自動檢查點機制,可以確保已完成的事務定期從 SQL Server 磁盤高速緩存寫入事務日志文件。檢查點將自上一個檢查點以來已被修改的緩存頁寫入數據庫。用檢查點將這些緩存頁(也叫臟頁)寫入數據庫可確保所有已完成的事務都被寫入磁盤。這個過程縮短了恢復系統故障(比如斷電)的時間。這個設置是可以更改的,請使用 SQL Server 企業治理器或 Transact-SQL sp_configure 系統存儲過程來修改恢復間隔設置。
完成數據庫全部備份后,請定期用 BACKUP DATABASE WITH DIFFERENTIAL 或備份向導只備份那些已經更改的數據和索引頁。
事務日志備份 Microsoft SQL Server 中的事務日志是與單個數據庫關聯的。事務日志文件會一直填寫,直到被備份或截斷為止。SQL Server 2000 的默認配置是讓事務日志自動增長,直到所有可用磁盤空間用完或到達配置的最大大小為止。當事務日志太滿的時候,它會產生錯誤,并禁止進一步修改數據,直到備份或截斷日志后才可繼續修改。其它數據庫不受影響。使用 BACKUP LOG 語句或備份向導可以備份事件日志。
文件備份、文件組備份 文件或文件組備份將一個或多個文件復制到指定數據庫,這樣可以將數據庫備份成更小的單位:文件或文件組一級。具體信息請參見 SQL Server 聯機圖書。 數據庫正在使用的時候就可以進行備份,這樣可以對必須連續運行的系統進行備份。SQL Server 的備份處理和內部數據結構最大程度地利用了數據傳輸速度,同時對事務吞吐量的影響控制在最低水平。
Oracle 和 SQL Server 的日志文件都需要特定的格式。在 SQL Server 中,這些文件(叫做備份設備)是用 SQL Server 企業治理器、Transact-SQL sp_addumpdevice 存儲過程和相應的 SQL-DMO 命令創建的。
雖然也可進行手動備份,但建議您使用 SQL Server 企業治理器和/或數據庫維護計劃向導來制定定期備份或根據數據庫活動備份的日程安排。
利用事務日志備份和/或某個數據庫全部備份(設備)的差異備份可以將數據庫恢復到某個時間點。數據庫恢復會用備份中包含的信息覆蓋數據。使用 SQL Server 企業治理器、Transact-SQL(RESTORE DATABASE)或 SQL-DMO 可以執行恢復。
如同可以在 Oracle 中取代自動備份一樣,在 Microsoft SQL Server 中,db_owner 固定數據庫的角色成員也可強制事務日志在每次出現檢查點時刪除日志內容。這可以使用 SQL Server 企業治理器(將恢復模式設置為簡單模式)、Transact-SQL(ALTER DATABASE)或 SQL-DMO 來實現。
至于 Microsoft SQL Server,Net-Libraries(網絡庫)支持用 Tabular Data Stream(TDS)協議在客戶端和服務器之間建立聯網連接。它答應與運行命名管道、TCP/ip 套接字或其它 Inter-PRocess Communication (IPC) 機制的多個客戶端同時連接。SQL Server 2000 CD-ROM 中包含所有客戶端 Net-Library,不需要單獨購買。
假如您的瀏覽器不支持內嵌框,請單擊此處在單獨的頁中查看。
SQL Server Net-Library 選項可以在安裝后更改。客戶端網絡實用工具可以為運行 Microsoft Windows® 2000、Microsoft Windows NT® 4.0、Microsoft Windows 95 或 Microsoft Windows 98 操作系統的客戶端配置默認的 Net-Library 和服務器連接信息。所有 ODBC 客戶端應用程序都使用同樣的默認 Net-Library 和服務器連接信息,除非在設置 ODBC 數據源的時候更改了此信息或者在 ODBC 連接字串中有明確的代碼。有關 Net-Libraries 的具體信息,請參見 SQL Server 聯機圖書。
數據庫安全性和角色 要想將 Oracle 應用程序完全遷移到 Microsoft SQL Server 2000,您必須了解 SQL Server 實現數據庫安全性和角色的方式。
數據庫文件加密 Microsoft windows 2000 答應用戶用加密文件系統 (EFS) 來加密文件。SQL Server 2000 可以使用 EFS。數據庫文件可以加密,防止其它用戶移動、復制或查看數據庫內容。加密是在操作系統一級完成的,而不是邏輯數據庫級別。當 SQL Server 打開加密文件時,文件內的數據按解密后的形式顯示。
網絡安全性 Microsoft SQL Server 2000 支持使用安全套接字層 (SSL) 來加密它與客戶端之間的網絡通訊。這種加密應用于 SQL Server 2000 支持的所有計算機間的協議,有 40 位和 128 位加密兩種方式,具體方式取決于運行 SQL Server 的 Microsoft Windows 操作系統的版本。
具體信息請參見 SQL Server 聯機圖書的“Net-Library 加密”。
登錄帳戶 登錄帳戶答應用戶訪問 SQL Server 數據或治理選項。guest 登錄帳戶答應用戶登錄到 SQL Server 并只查看答應 guest 訪問的數據庫。(guest 并不默認設置,需要用戶創建。)
登錄帳戶答應用戶治理或訪問 SQL Server 2000 實例中的數據。SQL Server 2000 使用兩種不同的方法來驗證登錄身份:
Windows 身份驗證 DBA 指定哪個 Windows 登錄帳戶可以用于連接到一個 SQL Server 2000 實例。使用這些帳戶登錄 Windows 的用戶可以連接到 SQL Server 2000,無需專門指定數據庫登錄和密碼。使用 Windows 身份驗證時,SQL Server 2000 使用 Windows NT 4.0 或 Windows 2000 的安全機制來驗證登錄連接,并依靠用戶的 Windows 安全證書。用戶不需要對 SQL Server 2000 輸入登錄 ID 或密碼,因為他們的登錄信息是直接從可信任的網絡連接獲得的。這個功能與 Oracle 用戶帳戶的 IDENTIFIED EXTERNALLY 選項類似。
SQL Server 身份驗證 DBA 定義一個單獨的數據庫登錄帳戶。用戶試圖連接到 SQL Server 2000 時必須指定此登錄帳戶和密碼。這個數據庫登錄與用戶的 Windows 登錄無關。這個功能與 Oracle 用戶帳戶的 IDENTIFIED BY PASSWord 選項類似。
每個 SQL Server 2000 實例都在兩種身份驗證模式之一上運行: Windows 身份驗證模式(在早期的 SQL Server 版本中叫做集成安全性)。在這種模式下,SQL Server 2000 只答應那些使用 Windows 身份驗證的連接。 混合模式。在這種模式下,可以用 Windows 身份驗證或 SQL Server 身份驗證來建立連接。 有關安全機制的具體信息,請參見 SQL Server 聯機圖書。
組、角色和權限 SQL Server 和 Oracle 都用權限來加強數據庫安全性。SQL Server 聲明級權限用于限制創建新數據庫對象的權利(與 Oracle 的系統級權限類似)。
SQL Server 還提供對象級權限。與 Oracle 中類似,對象級所有權被分配給對象的創建者,不可轉讓。其它數據庫用戶必須獲得對象級權限才能訪問該對象。sysadmin 固定服務器的角色成員、db_owner 固定數據庫的角色成員或 db_securityadmin 固定數據庫的角色成員還能將某個用戶的對象權限授予其他用戶。
SQL Server 聲明級和對象級權限可以直接授予數據庫用戶帳戶。但是,治理數據庫角色權限通常會更輕易。SQL Server 角色用于授予或撤銷某組數據庫用戶的特權(與 Oracle 角色非常類似)。角色是與特定數據庫相關的數據庫對象。安裝的每個 SQL Server 都有幾個特定的固定服務器角色,它們可跨數據庫使用。一個固定服務器角色的例子是 sysadmin。Windows 組和數據庫用戶也可被添加為 SQL Server 登錄。權限可以授予 Windows 組或 Windows 用戶。
一個數據庫可以有任意數量的角色或 Windows 組。每個數據庫都有一個默認的 public 角色,而且該角色不可刪除。public 角色的作用很象 Oracle 中的 PUBLIC 帳戶。每個數據庫用戶總是 public 角色的成員。除了 public 角色外,一個數據庫用戶可以是任意多個角色的成員。Windows 用戶或組也可以是任意多個角色的成員,而且肯定是 public 角色成員。
組、角色和權限 Microsoft SQL Server 和 Oracle 都用權限來加強數據庫安全性。SQL Server 聲明級權限用于限制創建新數據庫對象的權利(與 Oracle 的系統級權限類似)。
SQL Server 還提供對象級權限。與 Oracle 中類似,對象級所有權被分配給對象的創建者,不可轉讓。其他數據庫用戶必須獲得對象級權限才能訪問該對象。sysadmin 固定服務器的角色成員、db_owner 固定數據庫的角色成員或 db_securityadmin 固定數據庫的角色成員還能將某個用戶的對象權限授予其他用戶。
SQL Server 聲明級和對象級權限可以直接授予數據庫用戶帳戶。但是,治理數據庫角色權限通常會更簡單。SQL Server 角色用于授予或撤銷某組數據庫用戶的特權(與 Oracle 角色非常類似)。角色是與特定數據庫相關的數據庫對象。安裝的每個 SQL Server 都有幾個特定的固定服務器角色,它們可跨數據庫使用。一個固定服務器角色的例子是 sysadmin。Windows NT 組和數據庫用戶也可被添加為 SQL Server 登錄。權限可以授予 Windows NT 組或 Windows NT 用戶。
一個數據庫可以有任意數量的角色或 Windows NT 組。每個數據庫都有一個默認的 public 角色,而且該角色不可刪除。public 角色的作用很象 Oracle 中的 PUBLIC 帳戶。每個數據庫用戶總是 public 角色的成員。除了 public 角色外,一個數據庫用戶可以是任意多個角色的成員。Windows NT 用戶或組也可以是任意多個角色的成員,而且肯定是 public 角色成員。
數據庫用戶和 guest 帳戶 在 Microsoft SQL Server 中,用戶登錄帳戶必須先獲得授權,然后才能使用數據庫及其對象。登錄帳戶可以用以下方法之一來訪問數據庫:
登錄帳戶被指定為數據庫用戶 登錄帳戶使用數據庫中的 guest 帳戶。 Windows NT 組登錄可以映射到一個數據庫角色。然后,屬于該組成員的單個 Windows NT 帳戶可以連接到該數據庫。 db_owner 或 db_accessadmin 角色的成員或者 sysadmin 固定服務器角色成員可以創建數據庫用戶帳戶角色。一個帳戶可以包括幾個參數:SQL Server 登錄 ID、數據庫用戶名稱(可選)和最多一個角色名稱(可選)。數據庫用戶名稱可以與用戶的登錄 ID 不同。假如未提供數據庫用戶名稱,那么該用戶的登錄 ID 和數據庫用戶名稱是相同的。假如未提供角色名稱,那么該數據庫用戶只是 public 角色的一個成員。創建數據庫用戶后,可以視需要為該用戶分配任意數量的角色。
db_owner 或 db_accessadmin 角色的成員還能創建 guest 帳戶。guest 帳戶答應任何合法的 SQL Server 登錄帳戶即使沒有數據庫用戶帳戶也能訪問數據庫。默認情況下,guest 帳戶將繼續分配給 public 角色的所有特權;但是這些角色可以被更改為大于或小于 public 角色特權。
Windows NT 用戶帳戶或組帳戶可以獲得訪問數據庫的權限(就象 SQL Server 登錄一樣)。當屬于該組成員的某個 Windows NT 用戶連接到數據庫時,他會得到分配給該 Windows NT 組的權限。假如同時屬于多個 Windows NT 組成員的用戶訪問數據庫,他將獲得他所屬的所有組的所有權利。
sysadmin 角色 Microsoft SQL Server sysadmin 固定服務器角色成員擁有與 Oracle DBA 類似的權限。在 SQL Server 中,默認情況下,sa SQL Server 身份驗證模式登錄帳戶是這個角色的一個成員;假如 SQL Server 安裝在基于 Windows 2000 的計算機上,則是本地 Administrators 組的成員。sysadmin 角色成員可以添加或刪除 Windows 用戶和組以及 SQL Server 登錄。這個角色成員通常有以下責任:
安裝 SQL Server。 配置服務器和客戶端。 創建數據庫。* 建立登錄權限和用戶權限。* 將數據傳入或傳出 SQL Server 數據庫。* 備份和恢復數據庫。* 實施和維護復制。 安排自動操作。* 監視和調節 SQL Server 性能。* 診斷系統問題。 標有星號(*)的任務可以委托給其它安全角色或用戶。
sysadmin 固定服務器角色成員可以訪問任何數據庫和特定 SQL Server 實例上的所有對象(包括數據)。與 Oracle DBA 類似,有幾個命令和系統過程是只有 sysadmin 角色成員才能使用的。
db_owner 角色 雖然 Microsoft SQL Server 數據庫與使用中的 Oracle 表空間類似,但它們的治理卻不同。每個 SQL Server 數據庫都是一個自包含治理域。每個數據庫都指定給一個數據庫所有者 (dbo)。這個用戶總是 db_owner 固定數據庫角色的成員。其他用戶也可以是 db_owner 角色成員。任何是此角色成員的用戶都可以治理與該數據庫相關的治理任務(這一點與 Oracle 不同,它由一個 DBA 治理所有表空間的治理任務)。這些治理任務包括:
結論 Microsoft SQL Server 2000 提供了巨大的商業價值,它成本低、便于使用(有向導、調節工具和自動調節功能),并有集成的數據倉庫功能。SQL Server 2000 獲得了業內觀察家的一些最高評價和褒獎,并顯示了可以滿足領先公司和電子商務站點要求的能力。
本白皮書回顧了 Oracle 和 Microsoft SQL Server 的許多結構差異,并解釋了 Oracle 和 SQL Server 術語的一些不同之處。熟悉 SQL Server 并制定正確的計劃后,您可以遷移現有的 Oracle 應用程序并享受 SQL Server 2000 帶來的好處。