SQL Server 2005 整合 .NET Framework CLR,讓開發者能在 T-SQL 中直接呼叫 .NET 類別與函數。CLR 整合機制包含:CLR 使用者定義函數(含資料表值函數)、CLR 使用者定義型別、CLR 預存程序、CLR 觸發器。本文聚焦 CLR 資料表值函數(TVF),示範如何從多元資料源建構報表資料,打造可靠的 Reporting Services 報表。
本文提出 TVF 作為「資料處理擴充」的替代方案:以程式化方式於執行期建立資料表,供 T-SQL 查詢直接使用,開發門檻較低且整合度高。
TVF 透過程式碼於執行期建立資料表,產出的資料表可像一般資料表用於 T-SQL 查詢。SQL Server 2000 僅支援 T-SQL 撰寫 TVF,範例如下:
CREATE FUNCTION GetEmployeesByDept (@DeptID int)
RETURNS TABLE
AS
RETURN (SELECT * FROM Employees WHERE DeptID = @DeptID);
Microsoft.SqlServer.Server、System.Data.SqlClient、System.Data.SqlTypesIEnumerable 或 SqlDataReader 的靜態方法,標記 [SqlFunction(FillRowMethodName = "FillRow", TableDefinition = "...")]CREATE ASSEMBLY ... FROM '...dll' WITH PERMISSION_SET = SAFECREATE FUNCTION ... EXTERNAL NAME Assembly.[Namespace.Class]::MethodSqlDataReader 流式回傳CLR TVF 為 Reporting Services 資料擴充提供輕量、強大且易維護的路徑。善用 .NET 生態系豐富的函式庫,能快速整合異構資料源,打破 T-SQL 的資料存取邊界。