資料庫開發可以更容易、更寬廣 - 談 sql server 2008 資料庫開發新知識

22
胡百敬(http://byronhu.spaces.live.com) 精誠公司 恆逸資訊

Upload: chui-wen-chiu

Post on 20-Jul-2015

1.198 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

胡百敬(http://byronhu.spaces.live.com)

精誠公司 恆逸資訊

Page 2: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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))將資料庫變更追蹤自動化

Page 3: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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

Page 4: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

4

Optimize NULLs

White paper

Page 5: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

5

sp_configure

'show advanced options', 1;

GO

RECONFIGURE;

GO

Page 6: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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

Page 8: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

8

N 筆記錄 = N 句執行語法

N 筆記錄 = 1 句執行語法

Page 9: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

9

N 筆記錄 = N 句執行語法

每執行一句觸發一次使用者端/伺服器端來回

Page 10: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

10

N 筆記錄 = 1 句執行語法將資料以逗號分隔字串傳遞

以 XML 傳遞資料

以 Table Valued Parameter 傳遞資料

其他的選項使用 bulk copy

以多個參數傳遞資料(當下的限制是 2,100)

Page 11: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

11

// C#cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = "Test.spDelimitedString";cmd.Parameters.AddWithValue("@Values", @"…|…|……|…|……|…|…");cmd.Execute…;

--EXEC Test.spDelimitedString @Values = '…|…|……|…|……|…|…';

Page 12: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

14

優點強型別

沒有 SQL Injection 的危險

效能很好

使用者端與伺服器端都容易使用

缺點彈性較 XML 小;可能會需要傳遞多個 TVPs,同樣的情形可能一個 XML 參數就夠了

Page 13: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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;

Page 14: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

16

Events

MATCHED

NOT MATCHED

NOT MATCHED BY SOURCE

Type of event

$action

Page 15: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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);

Page 16: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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

Page 17: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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

Page 18: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

20

建立唯一過濾索引(unique filtered index),以剃除 NULLs

CREATE UNIQUE NONCLUSTERED INDEX idx_col1_notnullON dbo.T1(col1)WHERE col1 IS NOT NULL;

20

Page 19: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

21

資料分佈統計內容更為詳細精確

經由過濾條件傳回的資料可以建立統計(statistics )

自動為 filtered indexes 建立

可以手動為未建索引的欄位建立

與一般的統計相同,會自動更新

Page 20: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

22

可支援 .NET 的nullable變數型態。

增加可參照的 .NET 組件函式庫,例如System.Core、System.XML.LINQ(也就是LINQ to XML,沒有支援LINQ to SQL)

支援SQL Server新增的資料類型,如Date、HierarchyID、空間資料類型…等

以.NET定義的資料類型與自訂彙總函數之資料量大小;不再受限於8千位元組,最大可到 2G位元組

自訂彙總函數可以傳入多個參數

可以告知自訂資料表函數回傳的順序,以節省SQL Server資料庫引擎執行排序的成本

Page 21: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

23

SQL Agent jobs 週期性地掃描交易記錄,關注有啟動 CDC 的資料表之變動

變動資料放置在變更資料表,交易記錄同時提供了時間進程

透過 TVF 並指定交易的 LSN 或時間區段,可以取得變更資料

可以取得變更的經過細節,或是淨變化

Page 22: 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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