在 SQL Server 關聯式資料庫建立報表資料集

Reporting Services 提供一個資料處理延伸模組,這個模組支援從 MicrosoftSQL Server 關聯式資料庫擷取報表資料。這個資料處理延伸模組會從關聯式資料表、檢視、預存程序及基礎資料來源上定義的其他資料結構中擷取資料。當您已經連接到資料來源之後,可以建立一個報表資料集,使其定義您想要將該資料來源中的哪些資料用於報表。Reporting Services 資料集包括資料來源、處理報表時會擷取資料的查詢以及欄位的集合。資料集定義會儲存在報表定義中,[報表資料] 窗格會顯示報表中目前的資料集定義。

若要定義資料集,可以利用 Transact-SQL 查詢文字或預存程序呼叫來建立查詢,或是選擇資料表,並從中擷取所有資料;會自動從此查詢建立資料集的欄位集合。您可以編輯欄位或加入導出欄位,導出欄位會擁有此查詢執行時所計算之以運算式為基礎的值;欄位的資料類型會從 .NET Framework 對應到 Common Language Runtime (CLR) 資料類型的子集。如需詳細資訊,請參閱<了解報表資料集>和<如何:從 SQL Server 資料來源擷取資料>。

關聯式資料來源有兩個查詢設計工具:以文字為基礎的查詢設計工具和圖形化查詢設計工具;預設會開啟以文字為基礎的查詢設計工具。使用以文字為基礎的查詢設計工具可直接輸入 Transact-SQL 文字、從另一個來源貼上查詢文字、輸入不能利用圖形化查詢設計工具建立的複雜查詢,或是輸入以查詢為基礎的運算式。使用圖形化查詢設計工具可瀏覽資料來源上的中繼資料,以便能夠以互動方式設計查詢,或是檢視資料來源上預存程序或資料表的清單。如需詳細資訊,請參閱<圖形化查詢設計工具使用者介面>、<以文字為基礎的查詢設計工具使用者介面>和<如何:從 SQL Server 資料來源擷取資料>。

在定義查詢之後,也可以指定屬性 (如 Timeout 和 CaseSensitivity),以及定義哪些報表參數會傳遞值給查詢參數。當您執行查詢時,會從資料來源看到結果集;結果集中的資料行會對應到資料集內的欄位。當處理報表時,繫結到這些資料集欄位的報表項目會顯示所擷取或導出的資料。報表只會處理由任何查詢所擷取的第一個結果集。

指定查詢

如果是 SQL Server 資料來源,您可以使用以文字為基礎的查詢設計工具或圖形化查詢設計工具來幫助您指定資料集的查詢。當您為新的資料集指定查詢時,預設會開啟圖形化查詢設計工具。如果現有的資料集查詢太過複雜,而無法在圖形化查詢設計工具中檢視,就會開啟以文字為基礎的查詢設計工具。這兩種查詢設計工具都支援以下查詢類型:TextStoredProcedure。在您開啟查詢設計工具之前,請在 [資料集屬性] 對話方塊中指定查詢的類型。

對於 Text 查詢類型而言,如果您在查詢文字中包含查詢參數,Reporting Services 會建立對應的報表參數。對於 StoredProcedure 查詢類型而言,如果您的預存程序有輸入參數,Reporting Services 會建立對應的報表參數。如需有關查詢參數和報表參數的詳細資訊,請參閱本主題稍後的「使用查詢參數」。

如需有關每一個查詢設計工具的詳細資訊,請參閱<以文字為基礎的查詢設計工具使用者介面>和<圖形化查詢設計工具使用者介面>。

使用 Text 查詢類型

在 Text 模式下開啟查詢設計工具時,您可以輸入 Transact-SQL 命令來定義資料集內的資料。例如,下列 Transact-SQL 查詢會選取所有員工的所有名稱。

SELECT FirstName, LastName
FROM   HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID

按一下工具列上的 [執行] 按鈕 (!),即可執行查詢,並在 [結果] 窗格中顯示結果。

您也可以匯入另一個報表或 sql 檔案中的現有查詢。

使用 StoredProcedure 查詢類型

在 StoredProcedure 模式下開啟查詢設計工具時,就表示當您在 [資料集屬性] 對話方塊中指定了 StoredProcedure 時,已選取要使用的預存程序。

如果您已經知道想要執行的另一個預存程序名稱,您可以取代現有的文字,並在查詢窗格內輸入新的預存程序名稱。

Reporting Services 支援只傳回一組資料的預存程序。如果預存程序傳回多個結果集,只會使用第一個結果集。

如果預存程序的參數有預設值,可以使用 DEFAULT 關鍵字做為參數的值,在 Reporting Services 中存取該值。如果查詢參數連結到報表參數,使用者可以在報表參數的輸入方塊中輸入或選取 DEFAULT 一字。如需詳細資訊,請參閱<預存程序 (Database Engine)>。

使用查詢參數

如果是包含參數的查詢文字或是具有輸入參數的預存程序,報表設計師會在您執行查詢時,自動在報表定義中建立對應的報表參數。報表執行時,報表參數的值會傳遞給查詢參數。例如,下列 SQL 查詢會建立名為 EmpID 的報表參數:

SELECT FirstName, LastName FROM HumanResources.Employee E INNER JOIN
       Person.Contact C ON  E.ContactID=C.ContactID 
WHERE EmployeeID = @EmpID

您可以管理報表參數與查詢參數之間的關聯性,其方式是使用<資料集屬性對話方塊、參數>。具有參數的查詢若是連結到報表參數,則不需要 DECLARE 陳述式。

雖然報表參數是從查詢參數自動建立,但是您會在 [報表資料] 窗格中個別管理報表參數。

[!附註]

如果變更查詢參數的名稱,或刪除查詢參數,與查詢參數對應的報表參數並不會自動變更或刪除。您可以使用 [報表資料] 窗格工具列中的按鈕,以移除或變更報表參數的順序。如需詳細資訊,請參閱<將參數加入至您的報表>。