2013年6月24日 星期一

如何清除交易記錄

如何安裝 AdventureWorks2012

如何查詢 Store Procedure 使用情況

效能調校(7)-使用 DMV 查詢系統消耗資源

資料庫管理師常常面臨不知 SQL Server 如何使用資源的困擾,尤其是程式開發人員誤用 T-SQL 語法,索引設計不佳、大量來回存取…等,造成多人同時使用時耗盡系統資源,或是互相鎖定等狀況。 但要資料庫管理師抓出元兇,或是分析使用趨勢,利用既有工具程式如 SQL Server Management Studio 所內建的報表、活動監視器、SQL Trace/Profiler、Windows 效能監視器…等,仍力有未逮。 還要再進一步深入分析 SQL Server,則需使用動態管理物件(Dynamic Management Object, DMOs)

使用優化器提示來改善查詢效能

查詢優化器(Optimizer)

查詢優化器(Optimizer) 是一個 SQL Server 引擎中的元件,負責決定查詢陳述式該如何最佳化執行。 例如 indexes 如何使用、表格排序、合併(JOIN)表格時該如何執行等等。 簡單講,這個元件就是將查詢指令自動最佳化的工具。

提示(Hints)

Hints 是 SQL Server 中的指令,用來告訴 SQL Server 查詢處理器在執行 SQL 陳述式時,應該要強制執行的選項或策略。 當使用 Hints 指令時, Hints 指令可能會覆寫查詢優化器原本預計選取的執行計畫。

使用統計資料來改善查詢效能

2013年6月20日 星期四

順序物件

CREATE SEQUENCE 可以用來建立順序物件(sequence object )。 順序物件是一個由使用者定義的物件,它會根據定義規格產生數值序列。 不同於新增資料時使用的識別資料行(identity),應用程式可以藉由呼叫 NEXT VALUE FOR 函數取得下一個序號,而不需要插入資料列。

2013年6月19日 星期三

使用同義字

PIVOT 和 UNPIVOT

分組查詢

GROUP BY 的延伸類型有:

分析函式

以下幾個分析函數(Analytic Functions)都是 SQL 2012 新增功能。 分析函數會根據資料列群組計算出彙總值。 但不同於彙總函式,其可以傳回每個群組的多個資料列。 您可以使用分析函數計算群組中的移動平均、最新總數、百分比或前 N 個結果。

2013年6月14日 星期五

空間資料類型

Service Broker

Service Broker 是 SQL Server 提供的一種訊息佇列(Message Queuing)。 它可以與原本獨立運作的元件結合,共同建立非同步、鬆散偶合的的應用程式。

使用 Service Broker ,讓應用程式開發人員不需要撰寫複雜的通訊和傳訊間隔程式,即可將資料工作負載分散在多個資料庫。 這可減少開發和測試工作,因為 Service Broker 會處理交談內容中的通訊路徑。 此外,還可提升效能。 例如,支援網站的前端資料庫可記錄資訊,並將必須大量運算處理的工作傳送到後端資料庫的佇列中。 Service Broker 可確保所有工作都在同一交易內容中管理,以確保可靠性和技術一致性。

全文檢索查詢

使用全文檢索

全文檢索搜尋是由全文檢索引擎( Full-Text Engine)所提供。 要使用全文檢索,資料庫管理員必須先在給定的資料表上建立全文檢索索引,然後才能在此資料表上執行全文檢索查詢。

全文檢索索引是由資料表中一個或多個欄位構成,這些欄位可以是以下資料類型: char、varchar、nchar、nvarchar、text、ntext、image、xml、varbinary 或 varbinary(max)。

要使用 SQL Server 的全文檢索查詢資料,大至需要以下四個步驟:

  1. 安裝全文檢索服務。
  2. 建立全文檢索目錄。
  3. 擴展索引(Population)。
  4. 使用全文索引進行查詢。

2013年6月7日 星期五

資料表

使用 FileStream

有許多資料都是未結構化的,如文字檔、圖檔、影音檔。這些資料一般統稱二進位大型物件(BLOB)。 若將這些未結構化的資料儲存在資料庫外面,管理上往往造成許多困擾,所以在 SQL 裡,也提供了 varbinary(max) 型別來存放 BLOG 資料。

在 SQL Server 2008 新增了 FILESTREAM 功能,可以讓 SQL Server 直接存取位於檔案系統上的非結構化資料。 它的方式是使用 varbinary(max) 型別,並整合 NTFS 檔案系統,當你存取 BLOB 資料時,實際上 SQL Server 是存取在檔案系統上資料,而不是存取位於資料庫中的資料。

至於該使用哪一種來作業,來存取 BLOG 資料呢?MSDN 提到: 若儲存的物件平均大於 1 MB,請使用 FILESTREAM varbinary(max); 如果是較小的物件,直接使用 varbinary(max) 將物件資料儲存在資料庫之中通常會提供較好的資料流處理效能。

2013年6月4日 星期二

使用 SQLCLR 和 FileStream

自 SQL 2005 後,SQL Server 開始與 .NET 的 CLR 平台整合,讓 SQL Server 可以輕鬆的使用 .NET 程式語言的強大功能,以擴充 SQL Server 功能性及延展性。

CLR 可以為 SQL Server 撰寫五種擴充功能,分別是:

  • 預存程序 (Stored Procedure)
  • 自訂函式 (User Defined Function)
  • 觸發程序 (Trigger)
  • 彙總函式 (Aggregation Function)
  • 自訂型別 (User Defined Type)

在資料庫中使用 XML 欄位型別

早期的資料庫管理系統並不支援XML格式的欄位,因此資料庫管理系統本身無法對XML資料做最佳化的儲存與管理,更無法利用XML的查詢功能,例如:XPath語法直接查閱。 現今新版本的資料庫管理系統幾乎都支援XML的資料格式,並且增加特殊指令來處理XML資料,同時亦可直接將關聯式資料轉換成XML階層式的資料做輸出,軟體系統將不必再做資料轉換的動作,即可將關聯式資料以XML格式做處理。