因為sql server 2000缺乏某些高端性能,所以就被認為是90磅重的小不點兒。其實,沒有哪個強者能夠完成每一項壯舉,也沒有哪家公司需要每一項高端特性。多年來,許多大大小小的企業一直都在使用sql server來運行其公司業務。而經過全面修改的微軟sql server 2005又帶來了許多強大的新功能和一批新工具,sql server正在變得強大起來。
不可否認,說到真正的企業特性,尤其是在高可用性和災難恢復方面,sql server總是比不上oracle數據庫。oracle憑借聯機重建索引、基于快照的恢復和故障替換時進行日志傳送等特性,能夠滿足24×7的關鍵業務型操作,而sql server要是沒有第三方解決方案的幫助,則無法提供真正的零數據丟失。對不需要上述這些保護的客戶而言,sql server提供了可靠穩定的數據庫,而且許可費比較低。不過與維護有關的停機卻是個不爭的事實。
現在,這種狀況已發生了變化。經過五年多的修改后,sql server 2005不但克服了高可用性和災難恢復方面的缺點,還幾乎在各個方面都有了全面改進:管理任務得到了簡化;監控和診斷功能得到了增強;默認的鎖定配置、數據加密及其他新特性增強了安全。如今,分析服務(analysis services)、報表服務(reporting services)和數據挖掘(data mining)全面集成,而且已經很成熟。數據轉換服務(dts)已從頭到尾經過了改寫,已逐漸成為更強大、更靈活的sql服務器集成服務(ssis)。與visual studio和.net/clr的集成,把sql server的內部機制展現給了.net開發人員、把.net的內部機制展現給了sql開發人員。這意味著,現在就可以利用.net的強大功能,用于存儲過程、數據流和數據轉換、商業智能等應用。
sql server 2005還承諾能夠提高性能。除了讓數據庫管理員對數據庫進行分區、實現負載均衡外,微軟還在改進內存管理、索引策略和查詢優化方面進行了大量工作。用戶會看到這種區別的。
|||目前的sql開發人員和數據庫管理員需要一段時間才能充分認識到sql server 2005出現的許多變化。高可用性方面的一個關鍵特性:數據庫鏡像(database mirroring)實際上仍只是“測試版本”。微軟還有一些工作要做,特別是在集成及完善sql server的許多工具方面。不過,微軟的徹底修改縮小了sql server與oracle之間的差距,sql server由此成為一個真正的競爭者,哪怕是在大型數據庫和要求極高的企業環境這一領域。
  
圖1 ssis的新的控制流容器其功能遠遠超過了dts的功能,它讓你可以對操作進行分類、按順序執行。
ssis一瞥
集成工具集的全面變化給數據庫管理員帶來了受人歡迎的挑戰。
優點:新的建模范例、流控制容器和.net集成擴充了功能;軟件包易于編寫、存儲及部署;復雜操作執行起來比以往快得多。
缺點:比較復雜的工具集有些地方難以學會;沒有與management studio集成。
移動數據的新方法
ssis是經過改寫的用于移動及操縱數據的一組工具,它不但提供了比數據轉換服務(dts)大為改進的性能、可靠性和功能,而且提供了許多新的預制任務,可以用于減少執行最常見的一些操作所需的代碼數量,其中包括備份數據庫、為表重建索引以及進行完整性檢查。更為重要的是,ssis完全改變了dts使用的建模范例(modeling paradigm),以邏輯方式把其基本模塊劃分成不同的控制流和數據流部分。
控制流容器以圖形化方式表示了操作,不然,開發人員需要編寫大量代碼,花費大量時間來進行調試。用新容器(即sequence、for loop和foreach等容器)執行的有些操作根本無法用dts來執行,要么就是管理起來太困難。
|||
ssis還把范圍擴大到了不同平臺,而不僅僅是不同數據庫。譬如說,dts提供了聯機分析處理(olap)方面的有限的可見性,實際上根本不提供數據挖掘方面的可見性,而ssis原本就支持這些可見性。這意味著,可以運行數據挖掘查詢、處理慢慢變化的維度,并把數據發送到用戶喜歡的任何地方(甚至可以發送到報表服務工具)。實際上,ssis充當了sql服務器分析服務(ssas)、sql服務器解析服務(ssrs)以及符合面向對象數據庫連接性(odbc)的任何數據源之間的橋梁。
軟件包配置是得到大幅改進的另一個方面。這種配置讓用戶可以定義軟件包的某些元素:文件位置、數據庫連接和特殊登錄等元素,它們可以從外部數據源(如xml文件)讀取、運行時加以運用。這項功能讓用戶可以非常迅速地部署軟件包,因為不必改變它們就可以把它們從一個系統移動到另一系統;用戶只要改變配置里面的動態元素,軟件包就會在新服務器上運行。
最后,但并非最不重要的一點是,新的.net集成功能把ssis從dts對功能有限的vbscript的依賴當中解放出來,讓代碼編寫人員能夠使用功能豐富的vb.net。正是由于這個原因,文件和字符串處理、數學運算和win32調用大大簡化、速度大大加快。
讀者朋友可能已經預料到,功能和靈活性都增強的ssis是以變得更復雜為代價的。ssis擺在人們面前的是似乎困難重重的學習過程,不過一旦學會如何使用之后,ssis會改變你處理數據的方式。以往無法聯系的系統現在可以完美集成,還可以利用.net的全面功能。復雜數據把操作導入數據倉庫和分散的系統只用耗用一小部分時間來創建、執行及支持。其他復雜任務的執行速度也會大大加快,這意味著,可以更容易及時完成項目,項目也不會因功能有限的dts以及必須把諸多操作組合起來而被耽擱。
|||  
圖2 management studio整合了oltp和olap管理與開發,它使用報表服務在數據庫上提供詳細報表。
管理一瞥
管理工具的動態變化不會讓用戶完全滿意。
優點:監控、改進的復制、聯機恢復及其他功能提高了可用性、加快了災難恢復;動態管理視圖件和監控方面的改進為了解數據庫操作提供了更好的可視性;安全方面的改進包括:支持windows口令政策、加強了對模式變更的控制以及本地加密。
缺點:management studio存在性能和穩定性問題; profiler沒有與ssms合并。還沒有正式支持鏡像功能。
大大加強管理功能
微軟還對管理工具進行了一些重大改進,用新的sql server management studio(ssms)取代了企業管理器和查詢分析器。ssms既可以用做數據庫命令行——可以用來執行諸如創建數據庫和管理用戶賬戶之類的任務;又可以用作編寫數據庫代碼的工具。ssis和profiler沒有被整合到ssms里面。
這些改變不會讓用戶完全感到滿意。首先,執行通常的查詢任務,譬如瀏覽執行計劃,甚至只是執行查詢,速度都要慢得多。查詢在運行時,屏幕幾乎沒有多大反應,查詢執行計劃所用的時間也要長得多,有時還會導致窗口停止。微軟還改變了執行計劃的布局,所以比較大的計劃瀏覽起來會困難得多。許多用戶偏愛的鍵盤快捷鍵也被取消了,現在要是用鼠標右鍵點擊視圖(過去這項操作可以讓你編輯視圖),會把你直接引向查詢生成器。許多數據庫管理員不會喜歡這樣。
不過與總體上更豐富的管理功能相比,這些不便之處并不重要。微軟在一個方面取得了出人意料的成功,那就是sql錯誤日志管理。ssms不但可以顯示sql錯誤日志,還能夠把它們與windows nt事件日志結合起來放在同一窗口顯示,讓數據庫管理員在一個地方就能瀏覽所有相關信息。另外值得一提的是profiler的改進之處:現在它可以結合sql跟蹤日志和perfmon日志。這就大大簡化了把性能計數器和特定查詢關聯起來。實際上,如今要找到用戶想搜尋的具體內容輕而易舉,因為只要點擊perfmon日志里面的性能峰值,它就會自動把用戶帶到profiler日志里面的相關地方。
|||國內最大的酷站演示中心!sql的新管理功能其核心是動態管理視圖(dmv)和函數,這樣系統管理員就能更加深入地了解數據庫操作。過去微軟把數據庫的較深層面隱藏起來,可是要滿足管理大型數據庫的需求,勢必需要為數據庫管理員賦予更大的控制權。dmv為了解內存、索引使用、表統計信息、服務器統計信息和安全等信息提供了更大的可見性。現在只要用鼠標輕輕一點,就能看到以往所沒有的眾多信息。
此外,數據庫管理員可以得到詳細數據庫和服務器統計信息方面的現成報表,其中包括模式更改、內存和索引使用、資源耗用、分塊及其他許多信息。ssms依賴ssrs實現這項功能,不過如果在忙碌的服務器或者擁有大量對象的大型數據庫上調用報表,有時候ssms會陷入停頓。讓人有點失望的還有,微軟也沒有提供報表定義語言(rdl)代碼。因而,用戶沒法改變現成報表(canned report)的布局,也無法像通常使用ssrs那樣添加自己的報表或者創建訂閱內容。不過,可以把報表手動導出到excel或者pdf。
sql server 2005的一個重要設計目標就是提高默認狀態下的安全系數。為了縮小被攻擊范圍,最危險的一些特性都被禁用,除非數據庫管理員啟用它們。這有所幫助,不過對有經驗的數據庫管理員來說幫助不大。他們基本上會編寫鎖定腳本,覺得安裝時加以運行不是很麻煩。安全方面真正重要的改進則是密碼管理和權限分配方面。現在可以設置原始sql密碼來顧及windows密碼政策,這意味著用戶可以要求sql密碼擁有與windows賬戶同樣的密碼強度、失效日期、歷史、鎖定閾值、鎖定時間及生命期等政策,甚至可以要求用戶在下次登錄時更改密碼。安全方面的其他重要改進還包括:加強了對模式變更的控制(下文會有所討論)、能夠對數據進行列級加密。
sql server 2005還提供了激動人心的一些新特性,以提高可用性、加強災難恢復。在高可用性方面,微軟已經推出了數據庫鏡像功能,并且對復制功能做了一些重要改變。現在,模式方面的更改會自動復制到訂閱者處。數據庫管理員再也用不著手工運行代碼來實現這操作。出現故障后,再也用不著重新啟動快照;網絡出現故障或者其他小失誤后,快照會自動恢復,這樣就可以大大加快高可用性場景的投入使用。另外,邏輯記錄復制功能可確保高可用性場景更加穩定一致,排除了訂閱者端的邏輯錯誤。這項功能讓用戶可以定義可一起復制或者單獨復制的父數據和子數據。
|||鏡像功能讓用戶可以指定另一臺服務器上的某個數據庫與主數據庫保持同步。這樣一來,萬一主服務器出現故障,就可以自動切換至鏡像服務器,從而提供了sql server的第一個零數據丟失高可用性場景。這種配置對應用和網絡來說開銷很大,所以用戶需要進行全面測試,但這項功能終究擺在了人們面前。不過要注意:鏡像功能還稱不上是這個版本的一項生產特性。微軟交付的sql server 2005禁用了鏡像功能,這項特性未得到支持。
鏡像功能在測試過程中表現穩定,遇到故障時,能夠順利地替換容量為100gb的數據庫。不過,對鏡像進行監控的功能仍非常原始,它只包括少量的dmv和性能計數器,所以要查明多少數據已被復制、輔助系統與主系統相差多少或者復制成本多少不是特別容易。很難了解這個過程會不會讓一些人感到不滿。
至于災難恢復,sql server 2005大幅減少了恢復備份所需要的時間。一旦有對象,新的聯機恢復功能讓用戶可以開始在數據庫里面工作。有了sql server 2000,必須在提供給用戶之前恢復整個數據庫。考慮到完全恢復數tb容量的數據庫所用時間,有沒有聯機恢復功能,可能意味著是正常開展工作,還是停頓數小時。
同樣,用戶現在可以解決受損的數據庫,而且對用戶影響比較小。頁級恢復功能(page-level restore)讓用戶可以恢復受損的一個頁,而不會影響數據庫其余部分的可用性。
開發一瞥
新的工具和構件為開發人員提供了更強大的功能,又沒有太多難題。
優點:clr集成讓開發人員可以利用.net語言用于存儲過程和ssis軟件包;新的t-sql構件和改進之處增強了功能,同時簡化了代碼編寫;本地xml存儲功能讓開發人員能夠結合xml文檔和關系數據。
缺點:management studio缺乏重要的代碼編輯功能,如智能感知功能;界面反應不夠迅即使得management studio作為運行許多復雜查詢的工具而言缺乏效率;有些dmv需要比不推薦的dmv更長、更復雜的查詢。
|||,歡迎訪問網頁設計愛好者web開發。為新時代而開發
代碼方面的改進可以分為兩個基本類別:一類面向開發人員,另一類面向數據庫管理員。除了.net/clr集成功能外,通用表達式(cte)對開發人員來說大概最重要。除了可輕松自如地解決遞歸查詢問題外,cte還可以讓開發人員使用聯機查詢定義來取代視圖或者導出表(derived table),從而簡化代碼。
cte不但簡化了復雜查詢,還可以執行與導出表同樣的操作,所以實施起來不需要任何額外開銷。
另一個重要改進就是top子句。top子句原本可以讓用戶定義:只返回一定數量的結果集(譬如按收入排名的美國前十名銷售人員),現在它可以把某個參數作為一個變量。雖然這聽上去沒什么大不了,卻是屬于較小變化能給開發工作帶來巨大變化的情況之一。簡而言之,用戶現在可以加入變量,讓用戶迅速報告top 10或者top 100(或者其他任意數),用不著把靜態值(譬如top 10)加入到代碼里面。
便于開發的其他方面包括:排序、隨機數據抽樣、行列轉換(pivot/unpivot)、同義詞、大大改進的錯誤處理機制以及代碼安全上下文。許多開發人員還會對sql server 2005的原始xml存儲功能大唱贊歌。說到關系數據庫的xml處理功能,sql server 2000的功能限于把xml“分割”成關系數據,這個笨拙的過程無法保留xml的層次結構。現在,可以把xml導入到列當中,不但可以執行原始xml查詢,還可以為它建立索引,以便快速檢索。
數據庫管理員同樣可以享受到代碼方面的變革帶來的好處。許多編碼方面的變化為管理員從命令行提供了通過management studio無法得到的管理功能。特別是數據定義語言(ddl)不但會改變數據庫管理員處理工作的方式,還會幫助他們的ceo在晚上睡得安穩許多。一旦數據庫模式出現了變化,ddl就會引發警報,而且幾乎可以根據服務器或者數據庫里面的任何對象類型來加以定義,從而有助于避免出現不需要的更改。
|||在任何繁忙的生產環境,建立索引總是一個重要問題。數據庫管理員需要維護數據庫;生產經理們不希望生產業務被中斷。聯機索引功能讓數據庫管理員無須使數據庫處于離線狀態,就可以創建或者重建索引。索引與表并行創建,然后一旦創建完畢,就可以加以應用。當然,用戶一定要留意資源,不過這項特性將為必須要求24×7生產的公司大大提高可用性。數據庫管理員現在還可以控制索引操作使用的鎖定級別。
不是以往的olap
sql server 2005的商業智能工具套件包括:sql服務器分析服務(ssas)、sql服務器數據挖掘(ssdm)和sql服務器報表服務(ssrs),它們終于都是為了共同滿足商業智能需求而設計的。如今的ssas性能相當好,這歸功于易用性方面的諸多改進。新的商業智能向導(business intelligence wizard)隨帶了解決一些常見問題的現成解決方案。貨幣兌換、半累積度量和基于時間的計算只是該向導能處理的幾個例子。
ssas有一個非常重要的結構變化:統一維度模型(udm)。除非你在使用它,否則很難完全掌握udm,不過它基本上為客戶程序如excel和許多異構數據源之間架起了一座橋梁。或者用更簡單的話來說,它位于用戶和這些數據源之間,為用戶顯示所請求數據的視圖。udm為操作ssas的方式帶來了幾個重要變化。其中之一就是,現在可以擁有多個事實表(fact table);實際上,整個關系模式出現在用戶面前。有了udm,就不需要虛擬多維數據集和虛擬維度,不但提供了增強型功能,還提供了大大簡化的操作模型。
最讓人喜歡的一項新特性就是主動緩存(proactive caching)。這項機制讓用戶可以設置確定數據何時刷新的度量。設置度量有好幾種辦法,不過比較好的一種辦法就是定義基本數據變化時、就刷新多維數據集。數據在分區級進行刷新,平衡性能和延遲有許多選擇。
|||sql服務器數據挖掘已經從試驗階段發展成為一種成熟的應用。sql server 2000有兩種挖掘算法:簡單聚類和簡單決策樹,sql server 2005卻有十種算法。它還有25種新的視圖和可視化查詢編輯器。所有這些工具大大簡化了開發及使用挖掘模型。這倒不是說微軟已完全實現了這個目標:把數據挖掘功能交到非專業人員手里,但遠比使用第三方挖掘工具來得方便。
把商業智能軟件包結合起來的是ssrs。利用這個新版本,微軟擯棄了編寫及分發報表的大部分麻煩。報表生成器(report builder)也許是最重要的改進,這種新的web界面讓最終用戶可以編寫及發布自己的報表。管理員發布報表模型(這基本上定義了管理員想要用戶能夠用來編寫報表的數據),用戶就可以遵照向導界面,逐步創建自己喜歡的任何報表。從某種意義來說,這些報表比傳統的ssrs報表更豐富,因為它們隨帶已經內置的無限挖掘功能,這是以往設計的報表根本沒有的功能。
報表生成器的控件讓開發人員可以把報表嵌入到應用里面。除了這項人們需要的功能外,報表生成器還包括支持定制控件的功能,讓開發人員(最有可能是第三方開發商)擴展ssrs的功能。
ssrs還包括比較次要的改進,最終用戶會覺得有所幫助。其中之一就是多值參數,它讓用戶可以把多個值(譬如多個銷售區域)傳遞到單一參數里面。這項功能以前有賴于把定界元素傳遞到單一參數里面,然后對它們進行分析,傳送到數據庫里面的單個實體。另外一些改進包括:交互式分類,讓用戶可以改變報表里面列的分類標準;以及日歷選擇器,讓用戶可以從彈出式日歷選擇日期,而不是必須輸入日期。
對開發人員來說,ssrs可以直接處理ssas和ssis,把它們都作為數據源來使用。這向前邁進了一大步,因為當前的ssrs用戶可以采用已經到位的流程,以眾多方式生成眾多報表。單單ssis集成功能就讓用戶能夠從多個數據源獲取數據,包括從不同的數據庫、web服務、rss新聞源、ssas和數據挖掘庫等合并而來的數據。正可謂機遇無限。
|||,歡迎訪問網頁設計愛好者web開發。sql server還缺什么?
這個版本還缺少了什么功能?許多開發人員和數據庫管理員曾盼望用智能感知功能(intellisense)用于t-sql代碼編寫。許多人還希望有某種集中代碼庫。我們仍然有模板,不過這些模板通常駐留在客戶端上;數據庫管理員和開發人員無法輕松地從集中聯機資源當中獲取。ssis比dts有了大量改進,不過仍不是實際的抽取、轉換和加載(etl)服務器,這意味著它仍使用啟動軟件包的服務器的資源。這是許多數據庫管理員抱怨的原因之一,不過當前的體系結構也具有一些優點。對此,sql數據庫管理員已學會了如何忍受,并找到了變通方法。最后,微軟還沒有針對oracle的網格解決方案拿出相應的解決辦法。網格方案讓用戶可以聚合多個數據庫服務器用于負載均衡和故障替換,并作為一個群組加以管理。這是oralce仍可以聲稱較之sql server的最后一個重大優點。
那么誰應當升級?何時進行升級?應當馬上考慮升級的公司——假定它們的應用系統已符合使用新版本的標準、遷移不會使支持合同作廢——是這樣一些公司:需要真正的24×7可用性、高度依賴數據轉換服務(dts),或者需要遵從《薩班斯-奧克斯利法案》的審查要求。
如果你根本無法忍受由于維護或者其他任何原因而出現停機,就應當立即進行這種升級。sql server 2005在復制方面的改進、聯機重建索引、局部恢復以及很快推出的數據庫鏡像會減輕一些壓力。
如果你目前在使用的dts到了極限,改用ssis會最終簡化業務,不過可能不會像你喜歡的那樣簡單。所以,合理規劃必不可少。最佳辦法就是,部署一臺專用的ssis服務器,然后一次升級一個軟件包。這種方法讓你有機會在空閑時升級及測試。
如果你擔心的是法規遵從,那么新的安全特性和ddl觸發器會非常迅速地讓數據庫符合規范。不過,實施密碼策略可能會給你的環境帶來一些不便,所以你必須進行相應規劃。
對于沒有這些迫切問題的公司來說,sql server 2005也有其他許多理由讓你考慮使用它。從管理到開發,你只要挑出各個環節面臨的問題,sql server 2005就很可能有助于緩解問題。
sql server 2005是一款出色的版本,它會讓微軟在高端數據庫市場獲得一些真正的尊重。如今,sql server的工具在管理、監控尤其是在開發等各個方面幾乎都領先于oracle和db2——而在這三家開發商當中,微軟似乎對改進這些方面最為關注。也許另外兩家廠商應當開始修煉內功了。
  
圖3 分析服務擁有更整潔的界面,可以加快開發報表及商業智能應用。它現在利用visual studio進行開發。
商業智能一瞥
分析服務、數據挖掘和報表服務終于被設計成可以協同工作。
優點:新的統一維度模型使得分析服務成為連接眾多異構數據源的橋梁;數據挖掘功能日漸成熟,擁有更豐富的一系列挖掘算法和視圖;報表服務現在讓最終用戶可以創建自己的報表、讓開發人員可以把報表嵌入到應用里面;復雜的多維數據集執行起來良好、可靠。
缺點:management studio支持編寫商業智能代碼,但不支持報表;新界面帶來了有點難度的學習曲線,特別是對高級特性而言。
新聞熱點
疑難解答