DBA的最佳選擇—圖形介面還是T-SQL命令? (轉)
在這篇文章裡,我將從正反兩個方面討論 SERVER圖形管理工具和T-SQL管理命令,我將透過明確的例子來支援我的觀點。讀完這篇文章後,歡迎你發to:vyaskn@.com">給我闡述你的觀點,不管你支援還是反對我,我將根據你的想法這篇文章的相關部分。
你也許在很多地方瞭解到真正的管理員(a)和管理員使用命令管理,只有新手和最終使用圖形管理工具(GUI)。這是真的嗎,也許是,也許不是。我認為這個觀點和世界裡命令列是主要的互動介面有點關係。
什麼是我的最愛,企業管理器(Enterprise Manager)還是T-SQL命令?我的答案是透過查詢分析器(Query Analyzer)T-SQL命令來完成大部分的管理工作。我依靠T-SQL命令來完成我每一天的資料庫管理,因為T-SQL命令對我的這些管理工作可以完全控制而且非常靈活。
當我打一條命令時,我知道我做的是什麼。當我按下向導對話方塊的“完成”按鈕時,就不是這樣了!在企業管理器中嚮導和對話方塊對我來說是一個黑箱。你知道嚮導將要完成你的工作,但你不知道它是如何完成的。
那麼,這就意味這所有的資料庫管理員要知道所有的T-SQL命令嗎?不是的。但是你能用你的手指來完成命令也是非常有利的!比如,知道資料庫的建立、修改、、還原、維護和等命令是一直受用的!
我們知道,所有的產品都帶有友好的使用者介面,例如的企業管理器(一般叫EM或者SEM)。透過企業管理器,任何使用者都可以方便的建立和維護資料庫,但是這些使用者被企業管理器所限制,其中一部分還被稱為資料庫管理員!他們是真正的資料庫管理員嗎?
離開了企業管理器他們還能工作嗎?他們不能!但是,我們沒有人天生就是資料庫管理員!我們都是透過圖形介面開始學習,但是隨著學習的深入,任何一個好奇的資料庫管理員都會意識到圖形工具的限制,命令列的靈活。
對我個人來說,我有很多原因不喜歡企業管理器。主要的原因是受到限制!用命令列我可以同時直接做很多事情,企業管理器卻要用很多的來列印基本畫面,而且企業管理器使用的SQL DMO庫有點慢。還有很多原因讓我遠離企業管理器。
那麼我談論的哪些是限制,哪些是優點呢?我們舉一個簡單的例子!一個新手被要求在有幾百萬行資料的表中在第一列前插入一個新列!
他愉快的使用企業管理器的設計表(Table Designer)功能去插入一列,當他按儲存按鈕後,你猜會發生什麼?
在這之後,企業管理器會根據需要的結構建立一個新表,接著把舊錶中的資料複製到新表中,然後刪除舊錶,重新命名新表的名字為舊錶的名字。記住,這是個有幾百萬行資料的表,很明顯這將花掉他很多寶貴的時間去完成這個動作。但完成以後,你將會發現所有這個表的相關性資訊將會丟失,就像這個表是新建的一樣(你可以在修改前後用sp_depends命令來證明這一點)!
在這個例子中,我認為,一個有的資料庫管理員會使用Alter Table命令來增加新列,他不會關心這個列在表中的位置,因為列的次序是無關緊要的。Alter Table命令可以在很短的時間內完成相同的工作。那麼,企業管理器錯在哪裡呢?他在後臺作了很多糟糕的工作(可以用事件探查器Profiler證實),在這個過程中打斷之間的聯絡。他還能讓你做一些在邏輯上有問題的工作(比如在特定的位置增加一列)。
這裡還有一個例子。有一天,一個所謂的資料庫管理員告訴我,重新命名一個資料庫的名字是不可能的。我問他為什麼?他說:在企業管理器中沒有重新命名資料庫的選項。我開啟SQL Server聯機叢書,指給他看sp_renamedb的時,它的臉非常像:-)。這裡企業管理器又錯在哪裡?他只是沒有提供所有的功能。
我們再舉一個例子。要是資料庫管理員沒有完全瞭解Backup和Restore命令,他們只能使用資料庫維護計劃器(Database Maintenance Plans)設定備份,那麼怎麼用資料庫維護計劃器做資料庫差異備份呢?使用資料庫維護計劃器,沒有人可以完成資料庫差異備份!
還有一個例子。使用複製(Replication)嚮導,不可以訂閱或者取消訂閱一部分專案,你只能在複製中訂閱或者取消訂閱所有的專案。假如你使用複製的過程就不會有這個限制了!企業管理器又有什麼問題嗎?它只是沒有提供完整的函式命令。所以,只會使用滑鼠操作的使用者無法利用一個命令或者產品的所有特性。
另外一些例子
在企業管理器中監控當前活動怎麼樣呢?在一個繁忙的生產上,這是很慢的,它只是顯示一些關於程式和鎖的資訊。
你有做過多少次錯誤的判斷,只是因為你忘了在企業管理器中重新整理節點的狀態?
你有多少次白費功夫,因為企業管理器發生錯誤,或者不合法的訪問,或者是其他內部的錯誤。
DBCC命令又怎麼樣呢?你無法在企業管理器中執行它。
最後,又有多少次因為你升級了一些東西(比如MDAC或MMC)使你的企業管理器因為DLL輸入點錯誤而中斷。
簡單總結一下上面的內容:企業管理器會提供一些多餘的東西,但也不能完成所有的函式功能。為什麼這樣呢?假如你編輯一個使用者介面你就會理解:完成一個完整而且靈活的使用者介面不是很容易的!
所以,一些複雜的任務不能在使用者介面上實現。同時,SQL Server的開發團隊中大部分員精通一些語言,像C,C++,,但不是SQL,這就是為什麼企業管理器會在後臺執行臃腫的T-SQL程式碼。我想微軟可以較好的從MVP團隊中發展一些SQL的高手來促進T-SQL的發展。
那麼,我是否使用企業管理器呢?當然,我用!企業管理器可以做很多事情,比你自己寫程式碼好。
例如:企業管理器是建立作業(Jobs)的最佳選擇。建立作業需要很多MSDB資料庫中複雜的儲存過程,我常常用企業管理器建立作業,然後生成指令碼,把它到Visual Safe (VSS)中去,然後根據不同的環境(比如,質量評價,分段處理,情況變化)指令碼來處理作業。
還有,配置複製(Setting Up Replication)是一個非常複雜,需要呼叫無數的儲存過程。企業管理器能出色的完成配置複製的過程,雖然複製嚮導沒有提供一些高階選項。同樣,我用企業管理器生成複製指令碼,把這個指令碼儲存起來留到下次再要配置相似的複製的時候使用!
全文搜尋是另外的一個例子。在我的開發環境中,我經常使用企業管理器來建立全文目錄,然後生成指令碼,把這個當作從開發到完成到運轉到實施到維護整個環境的工程進展標誌。
DTS也是一個例子,在企業管理器中建立DTS的介面是非常方便和直覺的。
現在你可以理解了,企業管理器有強大的指令碼接受力,我儘量的使用它的這個特性。為什麼?因為一旦我有一個指令碼來完成某一個操作,我不必重新手工來完成這個工作,我只需要在需要的時候重新執行一下這個指令碼就可以了!
這裡有一些有關企業管理器錯誤和問題的列表。透過這些問題,你可以確信在你以後的資料庫管理工作中應該如何使用企業管理器。
(順便說一下,下面這些只是希望告訴你在使用企業管理器時你可能會碰到的問題,企業管理器仍然是一個有用的工具,只是微軟還需要
花一點時間來修復這些問題!)
.com/default.x?scid=KB;EN-US;q281347&">Q281347 : Can't Append Columns to Tables with Large Number of Columns in SEM Table Designer
這個設計表的錯誤,是你無法在一個有299列的表中再增加列。
下面這些是在企業管理器中作備份和恢復的問題。
?scid=kb;en-us;Q260235">Q260235 BUG: Point-in-Time Recovery Adds Incorrect Seconds Value to Recovery Time ed in SEM
NTITY
用企業管理器中設計表功能來修改一個表不會保護“NOT FOR RRPLICATION”屬性。
注意!我強烈建議不要使用企業管理器來編輯指令碼,我認為SQL查詢分析器是最好的工具。
當你想要處理資料庫表中的資料時,務必使用SQL查詢分析器。這樣,你就必須至少知道INSERT,DELETE和UPDATE命令。
另一個用企業管理器來處理表中資料的問題。
單使用者下企業管理器有問題。
這個問題使你在定義檢視時無法使用高階構造。
to More Than 16 Characters in Enterprise Manager
a Log Backup from SEM
s
這是一個我自己也碰到過的有趣的錯誤。當你使用企業管理器來備份和還原資料庫時,它會彈出一個視窗“There is no floppy disk in the floppy .”。這個視窗不會在客戶機上顯示,只會在伺服器上顯示,所以你根本看不到它,除非你直接登陸那臺伺服器。這個視窗還可以阻止你開啟和關閉資料庫服務。
結論?假如你是一個新手,剛開始學習SQL Server,使用企業管理器是正確的。但是,假如你是需要為產品負責的工程師,或者想控制自己所做的工作,那麼T-SQL命令和指令碼使你的選擇。就像我上面提到的,在某些情況下使用企業管理器也是恰當的。但是即使在這些情況下,我還是建議你開啟SQL事件探查器來看看企業管理器到底做了些什麼。
假如你使用企業管理器來生成指令碼,一定要看一下全部的指令碼,去掉那些你不想要的命令。我再次宣告強調一下,企業管理器並不是一個非常糟糕的工具,只是裡邊有一些問題存在,你必須小心。假如微軟花了足夠的時間和精力在企業管理器上的話,它將是一個非常優秀的管理工具。讓我們在Yukon期待一個更好的企業管理器。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998698/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redhat linux AS 4啟動後進入圖形介面還是命令列的選擇!RedhatLinux命令列
- oracle資料庫的ACFS圖形介面不可選擇Oracle資料庫
- centos 圖形介面和命令列介面切換(轉載)CentOS命令列
- 怎樣選擇TCP還是選擇UDPTCPUDP
- 07圖形化介面和命令列介面操作命令列
- Unix還是Windows?作業系統選擇因素(轉)Windows作業系統
- 選擇結構還是類?C#中的最佳實踐與效能最佳化指南C#
- 程式設計師:選擇效率,還是選擇質量?程式設計師
- linux圖形介面和命令列介面切換Linux命令列
- Java選擇自學還是培訓?Java
- Java之外選擇Scala還是Groovy?Java
- 圖形使用者介面(轉)
- DirectX 圖形介面指南(2) (轉)
- DirectX 圖形介面指南(4) (轉)
- DirectX 圖形介面指南(3) (轉)
- DirectX 圖形介面指南(5) (轉)
- DirectX 圖形介面指南(6) (轉)
- DirectX 圖形介面指南(7) (轉)
- 急救~進不了圖形介面(轉)
- DirectX圖形介面指南的介紹(轉)
- 關於DBA工具的選擇
- linux圖形化介面和命令介面切換的快捷鍵Linux
- Linux 是更好的選擇(轉)Linux
- CRM系統是企業數字化轉型最佳選擇
- 你應該選擇 Ubuntu 還是 Fedora?Ubuntu
- 選擇python還是web前端好PythonWeb前端
- 選擇HTTPS代理還是SOCKS代理?HTTP
- iOS 開發選擇OC還是Swift?iOSSwift
- React 還是 Vue:你該如何選擇?ReactVue
- 開發該選擇Blocks還是DelegatesBloC
- 管理 node 版本,選擇 nvm 還是 n?
- Linux ubuntu命令列安裝圖形介面LinuxUbuntu命令列
- 《WTL起步 - 玩轉圖形介面》目錄 (轉)
- 使用usermod命令控制口令選擇(轉)
- SDL3 入門(4):選擇圖形引擎
- 如何選擇谷歌seo還是adwords廣告?谷歌
- 分析選擇Salesforce CRM還是Zoho CRM(上)Salesforce
- 微服務選擇Spring Cloud還是Dubbo?微服務SpringCloud