国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

DBA的最佳選擇—圖形界面還是T-SQL命令?

2024-07-21 02:08:38
字體:
來源:轉載
供稿:網友
菜鳥學堂:

    在這篇文章里,我將從正反兩個方面討論sql server圖形管理工具和t-sql管理命令,我將通過明確的例子來支持我的觀點。讀完這篇文章后,歡迎你發郵件給我闡述你的觀點,不管你支持還是反對我,我將根據你的想法更新這篇文章的相關部分。

    你也許在很多地方了解到真正的數據庫管理員(dba)和系統管理員使用命令管理,只有新手和最終用戶使用圖形管理工具(gui)。這是真的嗎,也許是,也許不是。我認為這個觀點和unix世界里命令行是主要的交互界面有點關系。

    什么是我的最愛,企業管理器(enterprise manager)還是t-sql命令?我的答案是通過查詢分析器(query analyzer)執行t-sql命令來完成大部分的管理工作。我依靠t-sql命令來完成我每一天的數據庫管理,因為t-sql命令對我的這些管理工作可以完全控制而且非常靈活。

    當我打一條命令時,我知道我做的是什么。當我按下向導對話框的“完成”按鈕時,就不是這樣了!在企業管理器中向導和對話框對我來說是一個黑箱。你知道向導將要完成你的工作,但你不知道它是如何完成的。

    那么,這就意味這所有的數據庫管理員要知道所有的t-sql命令嗎?不是的。但是你能用你的手指來完成命令也是非常有利的!比如,知道數據庫的創建、修改、備份、還原、維護和監控等命令是一直受用的!

    我們知道,所有的微軟產品都帶有友好的用戶界面,例如sql server的企業管理器(一般叫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++,c#,但不是sql,這就是為什么企業管理器會在后臺執行臃腫的t-sql代碼。我想微軟可以較好的從mvp團隊中發展一些sql的高手來促進t-sql的發展。

    那么,我是否使用企業管理器呢?當然,我用!企業管理器可以做很多事情,比你自己寫代碼好。

    例如:企業管理器是創建作業(jobs)的最佳選擇。創建作業需要調用很多msdb數據庫中復雜的存儲過程,我常常用企業管理器創建作業,然后生成腳本,把它上傳到visual source safe (vss)中去,然后根據不同的環境(比如,質量評價,分段處理,情況變化)配置腳本來處理作業。

    還有,配置復制(setting up replication)是一個非常復雜,需要調用無數的存儲過程。企業管理器能出色的完成配置復制的過程,雖然復制向導沒有提供一些高級選項。同樣,我用企業管理器生成復制腳本,把這個腳本保存起來留到下次再要配置相似的復制的時候使用!

    全文搜索是另外的一個例子。在我的開發環境中,我經常使用企業管理器來創建全文目錄,然后生成腳本,把這個當作從開發到完成到運轉到實施到維護整個環境的工程進展標志。

    dts也是一個例子,在企業管理器中創建dts的界面是非常方便和直覺的。

    現在你可以理解了,企業管理器有強大的腳本接受力,我盡量的使用它的這個特性。為什么?因為一旦我有一個腳本來完成某一個操作,我不必重新手工來完成這個工作,我只需要在需要的時候重新運行一下這個腳本就可以了!

    這里有一些有關企業管理器錯誤和問題的列表。通過這些問題,你可以確信在你以后的數據庫管理工作中應該如何使用企業管理器。
 
    (順便說一下,下面這些只是希望告訴你在使用企業管理器時你可能會碰到的問題,企業管理器仍然是一個有用的工具,只是微軟還需要

花一點時間來修復這些問題?。?br>
     q281347 bug: can't append columns to tables with large number of columns in sem table designer

     這個設計表的錯誤,是你無法在一個有299列的表中再增加列。

     下面這些是在企業管理器中作備份和恢復的問題。
     q260235 bug: point-in-time recovery adds incorrect seconds value to recovery time selected in sem

     q319697 fix: sql enterprise manager restore to point in time does not stop at requested time and the database is left in a loading state

     q239667 bug: design table in sem does not preserve nfr property for identity 

     用企業管理器中設計表功能來修改一個表不會保護“not for rrplication”屬性。
    
     q240839 prb: pressing esc when modifying sp in sem erases changes without prompting

    注意!我強烈建議不要使用企業管理器來編輯腳本,我認為sql查詢分析器是最好的工具。

    q268505 prb: deletion of rows with the same values behaves differently in sem and query analyzer

    當你想要處理數據庫表中的數據時,務必使用sql查詢分析器。這樣,你就必須至少知道insert,delete和update命令。

    q237398 prb: sql enterprise manager returns "cannot start transaction while in firehose mode" error 

    另一個用企業管理器來處理表中數據的問題。

    q305711 bug: dbo user does not display in enterprise manager 

    單用戶模式下企業管理器有問題。

    q194014 prb: data designer does not support case statements in views

    這個問題使你在定義視圖時無法使用高級構造。

    q275618 fix: cannot set sqlserveragent password to more than 16 characters in enterprise manager

    q285952 fix: no_truncate may be added to backup log statement when you perform a log backup from sem 

    q296769 bug: can't use sql enterprise manager to create stored procedures containing linked server objects 

    q262607 bug: sql server enterprise manager does not create new table in default filegroup 

    q259551 fix: database remains in single user mode with the database maintenance plan option "repair any minor problems" 

    q319246 fix: error dialog box during sql server database backup

    這是一個我自己也碰到過的有趣的錯誤。當你使用企業管理器來備份和還原數據庫時,它會彈出一個窗口“there is no floppy disk in the floppy driver.”。這個窗口不會在客戶機上顯示,只會在服務器上顯示,所以你根本看不到它,除非你直接登陸那臺服務器。這個窗口還可以阻止你打開和關閉數據庫服務。

    結論?假如你是一個新手,剛開始學習sql server,使用企業管理器是正確的。但是,假如你是需要為產品負責的工程師,或者想控制自己所做的工作,那么t-sql命令和腳本使你的選擇。就像我上面提到的,在某些情況下使用企業管理器也是恰當的。但是即使在這些情況下,我還是建議你打開sql事件探查器來看看企業管理器到底做了些什么。

    假如你使用企業管理器來生成腳本,一定要看一下全部的腳本,去掉那些你不想要的命令。我再次聲明強調一下,企業管理器并不是一個非常糟糕的工具,只是里邊有一些問題存在,你必須小心。假如微軟花了足夠的時間和精力在企業管理器上的話,它將是一個非常優秀的管理工具。讓我們在yukon期待一個更好的企業管理器。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 墨竹工卡县| 宕昌县| 嫩江县| 民和| 定安县| 平谷区| 宁蒗| 肇州县| 庆云县| 德格县| 兴义市| 岑溪市| 崇左市| 通河县| 顺平县| 清涧县| 东阿县| 连平县| 泗洪县| 宜都市| 饶阳县| 嘉兴市| 恩施市| 贞丰县| 当雄县| 绥江县| 德昌县| 江安县| 安西县| 金昌市| 金川县| 含山县| 广宗县| 阿拉尔市| 兴业县| 湟中县| 大同市| 大同市| SHOW| 宁陕县|