SMO 簡介簡介簡介簡介
SQL Server Management Objects (SMO)[5]是 Micorost 針對應用程式開發人員 用來與 SQL Server 底層 API 直接溝通所設計的物件。在 SQL Server 2005 之後
SMO 物件模型會擴充並取代 SQL Server 2000 Distributed Management Objects (SQL-DMO) 物件模型。與 SQL-DMO 相較之下,SMO 在效能、控制能力和便 於使用的程度上都有提升。且因為 SMO 與 SQL Server 2000、SQL Server 2005、
SQL Server 2008 和 SQL Server 2008 R2 相容,所以可以管理多個版本的環境,以 下說明本論文所使用之 SMO Object。
資料庫連線資料庫連線資料庫連線資料庫連線物件物件物件物件(Server Connection)
如 , SQL Server 執 行 個 體 的 名 稱 與驗證模式)設定屬性。然後傳遞 Server
Connection 物件變數,做為 Server 物件建構函式的參數。可以使用 Copy 方法 來取得現有連接設定的複本。若要重複使用 Server Connection 通常不需要呼叫
Server Connection 物件的 Connect 方法。SMO 將會在需要時,自動建立連接,
並在執行作業完畢之後,將連接釋放到連接集區。呼叫 Connect 方法時,並不
會將連接釋放到集區。若要將連接釋放到集區,必須明確地呼叫 Disconnect 方
法。此外,您可以設定 Server Connection 物件的 NonPooledConnection 屬性來要 求非集區的連接。
資料庫資料庫資料庫資料庫物件物件物件物件(DataBase)
在 SQL Server 管理物件(SMO)中,資料庫是由 DataBase 物件表示。在 SMO
物件階層中,DataBase 物件位於 Server 物件之下。可利用 Create(建立) 、改變
(Alter)、移除(Drop)等 Method 來操作。
資料資料資料資料表物件表物件表物件(Table) 表物件
在 SQL Server 管理物件(SMO)中,資料表是由 Table 物件表示。在 SMO 物
件階層中,Table 物件位於 DataBase 物件之下。可利用 Create(建立)、改變(Alter)、
移除(Drop)等 Method 來操作。
索引索引索引索引物件物件物件(Index) 物件
在 SQL Server 管理物件(SMO)階層中,索引是由 Index 物件表示。索引資 料行是由 IndexedColumns 屬性表示的 IndexedColumn 物件集合來表示。
檢視檢視檢視檢視物件物件物件(View) 物件
在 SQL Server 管理物件(SMO)中,SQL Server 檢視是由 View 物件表示。
View 物件的 TextBody 屬性會定義檢視。該屬性等於用於建立檢視的 Transact-SQL SELECT 陳述式。
觸發程式觸發程式觸發程式觸發程式物件物件物件物件(Trigger)
在 SMO 中,觸發程序是利用 Trigger 物件表示。在觸發程序引發時所執行
的 Transact-SQL 程式碼是由 Trigger 物件的 TextBody 屬性所設定。觸發程序的類
型是利用 Trigger 物件的其他屬性所設定,例如 Update 屬性。這是布林值屬性,
指定觸發程序是否由記錄的 UPDATE 在父資料表上引發。
預存程序預存程序預存程序預存程序物件物件物件物件(StoredProcedure)
在 SQL Server 管理物件 (SMO)中,預存程序會由 StoredProcedure 物件表
示。若要在 SMO 中建立 StoredProcedure 物件,需要將 TextBody 屬性設定為定 義預存程序的 Transact-SQL 指令碼。參數需要@前置詞,且必須藉由使用
StoredProcedure Parameter 物 件 以 及 加 入 至 StoredProcedure 物 件 的 StoredProcedure Parameter 集合來個別地建立。
管理使用者管理使用者管理使用者管理使用者、、、、角色和登入角色和登入角色和登入角色和登入
在 SMO 中,登入是由 Login 物件表示。當登入存在於 SQL Server 時,可
以加入至伺服器角色。伺服器角色是由 ServerRole 物件表示,資料庫角色是由
DatabaseRole 物件表示,應用程式角色則是由 ApplicationRole 物件表示。與伺服 器層級相關聯的權限會列為 ServerPermission 物件的屬性。伺服器層級權限可授
UserCollection 物件,可指定資料庫中的所有使用者。每個使用者都與一個登入 相關聯。單一的登入可以與一個以上資料庫中的使用者產生關聯。Login 物件的
EnumDatabaseMappings 方法可用於列出每個資料庫中與該登入相關聯的所有使 用者;或者,User 物件的 Login 屬性也可指定與該使用者相關的登入。SQL Server
資料庫也具有指定資料庫層級權限集的角色,這些權限可以讓使用者執行特定的
工作。與伺服器角色不同的是,資料庫角色不是固定的。這些角色可以建立、修
改和移除。若要進行大量管理,可以為資料庫角色指派權限和使用者。
授與授與授與授與、、、撤銷和拒絕權限、撤銷和拒絕權限撤銷和拒絕權限撤銷和拒絕權限
ServerPermission 物 件 可 用 於 將 一 組 權 限 或 個 別 的 伺 服 器 權 限 指 派 給 ServerPermissionSet 物件。如果是伺服器層級權限,被授與者是指登入。Windows 驗證過的登入會列為 Windows 使用者名稱。當這個程式碼範例執行時,會從被
授與者撤銷權限,並使用 EnumServerPermissions 方法確認該權限已經移除。
資 料 庫 權 限 和 資 料 庫 物 件 權 限 也 可 藉 由 DatabasePermissionSet 物 件 和
ObjectPermissionSet 物件,以類似的方式進行指派。
備份及還原資料庫和交易記錄備份及還原資料庫和交易記錄備份及還原資料庫和交易記錄備份及還原資料庫和交易記錄
在 SMO 中,Backup 類別和 Restore 類別都是公用程式類別,可提供工具
來完成備份及還原的特定工作。Backup 物件表示所需的特定備份工作,而不是
伺服器執行個體上的 Microsoft SQL Server 物件。如果發生資料遺失或損毀,則
必須完整或部分地還原備份。部分還原會使用 FileGroupCollection 集合來分要
還原的資料。如果是進行交易記錄的備份,則可以使用 Restore 物件的
料。建議的備份程序是定期執行還原作業並檢查資料庫中的資料,以檢查備份的
完整性。與 Backup 物件類似,Restore 物件不需要藉由使用 Create 方法來建 立,因為它不代表 SQL Server 執行個體上的任何物件。Restore 物件是一組用
於還原資料庫的屬性和方法。
第三章 第三章 第三章
第三章、 、 、 、架構 架構 架構設計 架構 設計 設計 設計
本章根據前章節相關技術文獻之探討,進行相關系統架構、功能模組之設計,
以期望滿足研究目的之初衷。
3.1 單一存取介面 單一存取介面 單一存取介面 單一存取介面之 之 之 之 Virtual DBA 機制 機制 機制 機制
一般傳統之資料庫授權方式如圖 3.1 所示,系統帳號權限是由 DBA 控管,再 分別授權給系統開發人員以及指定系統執行時所使用之帳號,雖可控管但無法防
止惡意之帳用盗用或內部管理人員非法之監看機密資料。
圖 圖圖
圖 3.1 一般傳統之資料庫授權方式一般傳統之資料庫授權方式一般傳統之資料庫授權方式 一般傳統之資料庫授權方式
透過單一存取介面之管理方式如圖 3.2 所示,資料庫之帳號權限統一由
Virtual DBA 集中控管,系統開發人員或資料庫管理人員不需要使用資料庫帳號
Server 之帳號,是由 Virtual DBA 所掌控之系統管理權限帳號,再依管理人員或 應用系統之職掌資訊,在系統介面上給予適當瀏覽或異動之權限。
所有系統管理權限之密碼則只有部門之權責主管才有檢視或更動之權利,一
般開發者甚至是資料庫管員並無法得知。
圖圖圖
圖 3.2 單一存取介面之管理方式單一存取介面之管理方式單一存取介面之管理方式 單一存取介面之管理方式
3.2 依職務授予適當權限 依職務授予適當權限 依職務授予適當權限 依職務授予適當權限
圖 圖 圖
圖 3.3 由管理系統控管人員職掌及資料庫權限對應由管理系統控管人員職掌及資料庫權限對應由管理系統控管人員職掌及資料庫權限對應由管理系統控管人員職掌及資料庫權限對應
系統職掌關係主要在記錄維護人員與應用系統之關聯資訊,而透過這些資訊
便可明確定義維護人員具有那些資料庫之異動權限,以圖 3.3 為例,System A 之 維護人員與 System B 之維護人員各自有其維護之資料庫。其概念資料流程圖如
圖 3.4 所示,首先必須建立 System 以及 Server 相關之資訊,然後再透過員工與
System 之關係,便可明確定義員工職掌,也間接定義那些資料庫之該員工有權利 進行異動的範圍。
圖 圖 圖
圖 3.4 人員職掌及資料庫權限對應流程圖人員職掌及資料庫權限對應流程圖人員職掌及資料庫權限對應流程圖人員職掌及資料庫權限對應流程圖
3.3 經由 經由 經由 經由資料關 資料關 資料關 資料關聯 聯 聯 聯定義 定義 定義, 定義 , , ,即時獲 即時獲 即時獲得 即時獲 得 得 得其它系統 其它系統 其它系統資料庫異動內容 其它系統 資料庫異動內容 資料庫異動內容 資料庫異動內容
圖 圖 圖
圖 3.5 資料庫來源關聯控管及異動機制資料庫來源關聯控管及異動機制資料庫來源關聯控管及異動機制 資料庫來源關聯控管及異動機制
如圖 3.5 所示,企業內部之應用系統其資料來源的參考是很頻繁且複雜,也
是較難控管的部份,若能完整記錄資料關聯之上下游關係,任何上游系統的資料
屬性更動都可追溯至下游之資料源,且透過資料與系統職掌之資訊,可在第一時
間通知相關負責人員,減少異動後所產生的錯誤。
3.4 利用比對功能確保部署完整性 利用比對功能確保部署完整性 利用比對功能確保部署完整性 利用比對功能確保部署完整性
資料庫的部署常會出現在新系統上線時,以上圖為例,要把 Testing 環境所
使用到的資料庫複製到 Production,才能使系統正常運行,目前資料庫軟體工具 只能以 Server 為單位來進行 Backup/Restore 或 Import/Export,所以若有人工操作
遺漏,便會使 Production 系統無法正常執行。
透過以系統為角度之觀點,便能輕易得知系統所使用的資料庫有那些,而且
也不受跨 Server 之影響,在部署的完整性上比單一 Server 更強,而部署系統之
前置動作就是比對,它是系統決定要部署那些單元的依據。
圖圖圖
圖 3.7 資料庫物件比對機制資料庫物件比對機制資料庫物件比對機制資料庫物件比對機制流程圖流程圖流程圖 流程圖
如圖 3.7 所示,在本系統的設計上,採用編輯區及資料庫同步區來區別控系
統管值與實際值,也是資料庫比對的兩個重要來源,透過這樣的機制可以完全掌 握其差異性,使部署的錯誤減到最低。
3.5 系統 系統 系統 系統作業流程 作業流程 作業流程 作業流程全覽 全覽 全覽圖 全覽 圖 圖 圖
第四章 第四章
第四章 第四章、 、 、 、系統實作與建置 系統實作與建置 系統實作與建置 系統實作與建置
本章節根據前章節所提出之系統架構設計方法,進行系統實作來驗證系統之 可行性,並詳細介紹系統實作所使用的開發平台、系統架構、程式架構、功能模
組以及實際導入使用的步驟與本系統的功能限制。
4.1 開發平台 開發平台 開發平台 開發平台及語言 及語言 及語言 及語言
Microsoft Visual Studio 2005 & C#.Net
本系統之程式開發工具為Microsoft Visual Studio 2005,此為Microsoft支援
至.Net Framework 2.0以上之開發平台,而本系統採用之程式語言為C# .Net,此
語言在.Net Framework支援的多種語言中,對於物件導向設計的支援最多,而本 系統是利用C#在.Net Framework 2.0平台上進行程式開發。
Microsoft SQL Server 2005
本論文現階段研究範圍為Microsoft SQL Server,而在資料庫維護上,則是
採用SQL Server 2005之管理介面來同時控管SQL Server 2000以SQL Server 2005。