microsoftsqlserver2005中的重大更改之一是包含了xml資料型別。此資料型別是第一類型別,就像int或varchar一樣,而且sqlserver2005允許使用一系列xml特定的函式對此資料型別進行就地查詢和處理。它還支援儲存中的xml架構的集合,從而啟用基於資料庫的架構驗證。另外,sqlserver2005大大地擴充套件了xml組合(select...forxml語句)的功能,擴充套件了openxml()xml分解函式,並針對xml資料型別提供了乙個新的nodes()函式以進行更輕量級的分解。
既然對資料庫伺服器增強了此新的xml功能,那麼對microsoft2.0中的sqlclient資料提供程式也進行增強就不會令人感到驚奇了。對adodataset也有更改,以便支援型別xml的datacolumn,而且system.data和system.xml之間的「整合點」得到了拓寬。在本文中,我將**在客戶端上使用sqlserver2005xml資料型別。
sqlserver2005可以產生兩類xml輸出。語句select*fromauthorsforxmlauto產生xml流,而不是一列一行的行集。該輸出型別與sqlserver2000中的輸出型別相比沒有改變。只是因為查詢分析器工具中的限制,xml流輸出在sqlserver查詢分析器中才顯示為一列一行的行集。您可以通過其特定的唯一識別符號名稱「xml_f52e2b61-18a1-11d1-b105-000805f49916b」來將這種流與「普通」列區分開來。此名稱實際上是底層tds(這是一種**式的資料流,sqlserver網路格式)分析器的指示器,在這種分析器中,列應該流至客戶端,而不是像普通行集那樣傳送。有一種特殊的方法sqlcommand.executexmlreader用來在客戶端上檢索此特殊的流。在sqlserver2005中,select...forxml語句通過許多方式得到了增強。這裡僅提少數幾種:
1.在大多數情況下,當您需要sqlserver2000中的forxmlexplicit模式時,有一種新的、便於使用的forxmlpath模式。
2.使用type指令,除了生成流之外,您還可以生成xml資料型別列。
3.可以巢狀forxml表示式。
4.select...forxml可以使用root指令生成xml文件以及xml片段。
5.您可以將標準的xsd架構預先掛起到流。
通過引用ado.net2.0中的關係datatype列舉,您可以初步了解到xml是一種一流的關聯式資料庫型別。system.data.dbtype和system.data.sqldbtype分別包含dbtype.xml和sqldbtype.xml的附加值。在system.data.sqltypes命名空間中也有乙個新的類,它是sqlxml。這個類充當xml型別值的xmlreader例項工廠。我將通過一些簡單的**進行展示。假設我有乙份sqlserver表,如下所示:
createtablexmltab(idintidentityprimarykey,xmlcolxml)
我可以使用以下ado.net2.0**在客戶端上訪問此表。
usingsystem;usingsystem.data;usingsystem.data.sqlclient;usingsystem.data.sqltypes;usingsystem.xml;voidgetxmlcolumn}}1
sql 2005 迴圈處理資料
對oracle而言用游標很容易就可以實現,也不會太耗費資源 相對來說 而sql用游標確相當的慢,以下用row number實現的乙個迴圈處理 declare date datetime,maxid int id int begin select maxid count from nt fundchi...
SQL Server 2005海量資料處理
超大型資料庫的大小常常達到數百gb,有時甚至要用tb來計算。而單錶的資料量往往會達到上億的記錄,並且記錄數會隨著時間而增長。這不但影響著資料庫的執行效率,也增大資料庫的維護難度。除了表的資料量外,對錶不同的訪問模式也可能會影響效能和可用性。這些問題都可以通過對大表進行合理分割槽得到很大的改善。當表和...
SQL Server2005表分割槽處理操作的5步驟
對於大表的資料處理,我們很容易想到對錶進行分割槽,其實就是將乙個表的資料按照某乙個可以進行分段處理的字段進行擷取拆分,儲存的時候通過這個字段觀察,表資料是一段一段的效果 分別存放在不同的檔案組,檔案組又分別存放在不同的硬碟上,這樣通過提高系統的i o來提高系統對資料處理的效能。這裡只記錄如何進行分割...