資料庫開發更容易,更寬廣 談SQL Server 2008資料庫開發新知識<br />胡百敬(http://byronhu.spaces.live.com)<br />精誠公司 恆逸資訊<br />
大綱<br />精確地使用日期和時間資訊<br />以疏鬆資料行有效地存放疏鬆擴展的資料<br />整合式全文檢索(Full-Text Indexes )提供高效能、擴充性和管理能力<br />以資料表值參數(Table-Valued Para...
SQL Server 2008 強化的 T-SQL<br />
使用Sparse Columns 有效地儲存資料<br />Optimize NULLs<br />White paper<br />
為 ad hoc 負載最佳化<br />sp_configure<br />&apos;show advanced options&apos;, 1;<br />GO<br />RECONFIGURE;<br />GO<br />
SQL Server 2008:  Wordbreakers<br />Portuguese<br />Punjabi<br />Romanian<br />Russian<br />Serbian Serbian Latin<br />Slo...
使用 TVP 載入大資料集合<br />批次<br />White paper<br />
傳遞集合資料給 SQL Server<br />N 筆記錄 = N 句執行語法<br />N 筆記錄 = 1 句執行語法<br />
傳遞集合資料給 SQL Server<br />N 筆記錄 = N 句執行語法<br />每執行一句觸發一次使用者端/伺服器端來回<br />
傳遞集合資料給SQL Server<br />N 筆記錄 =1 句執行語法<br />將資料以逗號分隔字串傳遞<br />以 XML 傳遞資料<br />以 Table Valued Parameter 傳遞資料<br />其他的選項<br /...
以逗號分隔字串傳遞資料<br />// C#<br />cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = &quot;Test.spDelimitedString&q...
Pass the Data as XML<br />// C#<br />cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = &quot;Test.spXML&quot...
Pass the Data as a Table Valued Parameter<br />// C#<br />cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = ...
以 Table Valued Parameter 傳遞資料<br />優點<br />強型別<br />沒有 SQL Injection 的危險<br />效能很好<br />使用者端與伺服器端都容易使用<br />缺點<br />彈性較 XM...
以 Table Valued Parameter 傳遞資料<br />// C#<br />cmd.CommandType = CommandType.StoredProcedure;cmd.CommandText = &quot;Test.s...
使用 MERGE 命令執行多個作業<br />Events<br />MATCHED<br />NOT MATCHED<br />NOT MATCHED BY SOURCE<br />Type of event<br />$action<br />
使用 MERGE 命令執行多個作業<br />MERGE Test.Orders AS o<br />	USING @Values AS v<br />		ON v.OrderId = o.OrderId<br />	WHEN MATCHED ...
超越關聯式資料的特色概觀<br />SQL Server 2008<br />SQL Server 2005<br />遠端 BLOB Store API<br />Filestream<br />整合式的全文檢索<br />全文檢索<br /...
SQL Server 2008 空間資料歸納<br />特徵<br />概觀<br /><ul><li> 2 種空間資料類型(CLR UDT)
豐富的空間方法
高效率的空間索引
Management Studio 整合
Upcoming SlideShare
Loading in...5
×

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

1,173

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,173
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Self-explanatory.Stress that this can make the statistics more detailed and useful, especially for skewed data sets. Everything about maintaining filtered stats work the same way as for regular stats.
  • Stress that its asynchronous and works through a log reader.
  • 資料庫開發可以更容易、更寬廣 - 談 SQL Server 2008 資料庫開發新知識

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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×