資料庫開發可以更容易、更寬廣 - 談 sql server 2008 資料庫開發新知識
TRANSCRIPT
胡百敬(http://byronhu.spaces.live.com)
精誠公司 恆逸資訊
2
精確地使用日期和時間資訊
以疏鬆資料行有效地存放疏鬆擴展的資料
整合式全文檢索(Full-Text Indexes )提供高效能、擴充性和管理能力
以資料表值參數(Table-Valued Parameters)傳遞大量資料給函數或程序
使用 MERGE 命令執行多個作業
使用 HierarchyID 資料類型,將階層式資料模型化
使用空間資料類型(spatial data types)、空間方法(spatial methods)和空間索引(spatial indexes),建立可感知位置的應用程式
提供檔案資料流 (Filestream) 有效管理檔案及文件資料
提供 GROUP BY 加速群組集合的查詢速度
提供篩選的索引 (Filtered Indexes ) 加速資料集的存取速度
對 .NET CLR 進一步支援
異動資料擷取(Change Data Capture(CDC))將資料庫變更追蹤自動化
3
資料類型
Date & Time
HierarchyID
Windows collations
SQL language
MERGE
GROUPING SET
Table value constructor
Sparse column
Filtered index
全文檢索
撰寫程序
Table Value Parameter
宣告和初始化變數
Compound assignment operators
Object dependency
5
sp_configure
'show advanced options', 1;
GO
RECONFIGURE;
GO
6
Arabic
Bengali
Brazilian
Bulgarian
Canadian
Catalan
Chinese (Simplified)
Chinese (Traditional)
Chinese (Hong
Kong)
Chinese (Macau)
Chinese (Singapore)
Croatian
Cyrillic
Danish
Dutch
English
English UK
French
German
Gujarati
Hebrew
Hindi
Icelandic
Indonesian
Italian
Japanese
Korean
Latvian
Lithuanian
Malay
Malayalam
Marathi
Neutral
Norwegian
Polish
Portuguese
Punjabi
Romanian
Russian
Serbian
Serbian Latin
Slovak
Slovenian
Spanish
Swedish
Tamil
Telugu
Thai
Turkish
Ukrainian
Urdu
Vietnamese
Present but
disabled
New for 2008
In 2005 but
replaced in 2008
Unchanged from
2005
8
N 筆記錄 = N 句執行語法
N 筆記錄 = 1 句執行語法
9
N 筆記錄 = N 句執行語法
每執行一句觸發一次使用者端/伺服器端來回
10
N 筆記錄 = 1 句執行語法將資料以逗號分隔字串傳遞
以 XML 傳遞資料
以 Table Valued Parameter 傳遞資料
其他的選項使用 bulk copy
以多個參數傳遞資料(當下的限制是 2,100)
11
// C#cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spDelimitedString";cmd.Parameters.AddWithValue("@Values", @"…|…|……|…|……|…|…");cmd.Execute…;
--EXEC Test.spDelimitedString @Values = '…|…|……|…|……|…|…';
14
優點強型別
沒有 SQL Injection 的危險
效能很好
使用者端與伺服器端都容易使用
缺點彈性較 XML 小;可能會需要傳遞多個 TVPs,同樣的情形可能一個 XML 參數就夠了
15
// C#cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spTVP";var p = cmd.Parameters.Add("@Values",
SqlDbType.Structured);p.TypeName = "Test.OrderTableType";p.Value = dataTable;cmd.Execute…;
-- What happens on the server?:DECLARE @Values Test.OrderTableType;INSERT @Values …EXEC Test.spTVP @Values = @Values;
16
Events
MATCHED
NOT MATCHED
NOT MATCHED BY SOURCE
Type of event
$action
17
MERGE Test.Orders AS oUSING @Values AS v
ON v.OrderId = o.OrderIdWHEN MATCHED THEN
UPDATE SET CustomerId = v.CustomerId,OrderDate = v.OrderDate,DueDate = v.DueDate
WHEN NOT MATCHED BY SOURCE THEN DELETE
WHEN NOT MATCHED THEN INSERT (OrderId, CustomerId, OrderDate)
VALUES(v.OrderId, v.CustomerId, v.OrderDate);
18
SQL Server 2005 SQL Server 2008
大型 UDTsSparse ColumnsWide Tables/Column SetFiltered IndicesHierarchyID
Relational
BR Support
User Defined Types
全文檢索文檔 &
多媒體
遠端 BLOB Store APIFilestream整合式的全文檢索
空間資料
完整支援 Geometry 和 Geography 資料類型與功能
XML資料類型與功能
強化 XML
XML
1919
• 2 種空間資料類型 (CLR UDT)
•豐富的空間方法•高效率的空間索引•Management Studio 整合
概觀 特徵
• 支援 2D 向量資料• Open Geospatial Consortium Simple
Features for SQL compatible
•SQL Server 的標準功能Express, Workgroup, Web, Standard,
Enterprise
和 Developer
• 支援非常大型的空間物件
細節
•地球量測資料可使用 Geography 資料類型•平面空間可使用 Geometry 資料類型•標準的空間方法
STIntersects, STBuffer, STLength, STArea,
etc.
•標準的空間資料定義WKT, WKB 和 GML
•可廣泛部署使用的空間函式庫SQLSysClrTypes
20
建立唯一過濾索引(unique filtered index),以剃除 NULLs
CREATE UNIQUE NONCLUSTERED INDEX idx_col1_notnullON dbo.T1(col1)WHERE col1 IS NOT NULL;
20
21
資料分佈統計內容更為詳細精確
經由過濾條件傳回的資料可以建立統計(statistics )
自動為 filtered indexes 建立
可以手動為未建索引的欄位建立
與一般的統計相同,會自動更新
22
可支援 .NET 的nullable變數型態。
增加可參照的 .NET 組件函式庫,例如System.Core、System.XML.LINQ(也就是LINQ to XML,沒有支援LINQ to SQL)
支援SQL Server新增的資料類型,如Date、HierarchyID、空間資料類型…等
以.NET定義的資料類型與自訂彙總函數之資料量大小;不再受限於8千位元組,最大可到 2G位元組
自訂彙總函數可以傳入多個參數
可以告知自訂資料表函數回傳的順序,以節省SQL Server資料庫引擎執行排序的成本
23
SQL Agent jobs 週期性地掃描交易記錄,關注有啟動 CDC 的資料表之變動
變動資料放置在變更資料表,交易記錄同時提供了時間進程
透過 TVF 並指定交易的 LSN 或時間區段,可以取得變更資料
可以取得變更的經過細節,或是淨變化
24
Introduction to New T-SQL Programmability Features in SQL Server 2008(http://msdn.microsoft.com/en-us/library/cc721270.aspx)
Apress Beginning Spatial with SQL Server 2008 Alastair Aitchison