將參數加入至您的報表

在 Reporting Services 中,參數是用來指定用於報表中的資料、將相關報表連接在一起,以及讓報表呈現方式有所不同。若要將報表設計為可以有效地使用參數,則您必須了解參數和資料集查詢如何協同作業、參數和運算式如何協同作業、在報表伺服器上如何管理已發行報表的參數,以及報表是設計為回答什麼問題。您選擇進行參數化的項目會影響報表設計及配置。

查詢參數會藉由查詢設計工具或 [資料集屬性] 對話方塊加入至資料集查詢。在建立具有參數的查詢後,Reporting Services 就會將查詢參數自動地連結到名稱相同的報表參數。您可藉由 [報表資料] 窗格來加入及修改新的報表參數。

在 Reporting Services 中使用參數

參數最常見的用法是變更資料集查詢所擷取的報表資料。在此案例中,使用者會在執行報表時接到輸入單一值或多重值的提示,而資料集查詢只會擷取所要求的資料。資料集查詢包含查詢參數,而 Reporting Services 會自動建立間接連結到這些查詢參數的相對應報表參數。您可以在報表設計工具中變更報表參數屬性,以包含有效值清單以及會在執行階段顯示的使用者提示。

您也可以建立串聯式參數,這種參數會從資料來源擷取階層式資料。例如,第一個參數可以篩選產品類別,第二個參數則篩選產品。階層式參數可用來組織使用者可用的值並限制其數目。

並非所有的資料來源都支援查詢參數。當您無法篩選來源的資料時,可以利用報表參數讓使用者在擷取報表所需的資料之後加以篩選。雖然所有的查詢參數都有對應的報表參數,但您可以在報表設計師工具中個別地定義報表參數。在擷取資料之後,也可以用報表參數來變更報表的外觀或組織。

參數可以用來將報表連接到子報表和鑽研報表。這些報表參數可能是隱藏的,會使用主報表中的值為連接的報表選取正確資料,或者使用者可能會在執行階段看到這些參數。

在建立報表參數之後,您可以修改預設值和其他的參數屬性,例如可見性。例如,報表參數可以使用類似 UserID 的內建變數,所以您可以建立具有隱藏參數的報表,以選取執行報表之使用者特定的資料。參數可以包含單一值或多重值、使用靜態或以查詢為基礎的有效值清單,並接受 Null 或空白值。多重值參數可讓使用者在執行階段選取一個以上的值。

在報表發行之後,參數可以與報表定義分開管理。依照您在設計階段設定報表中之參數的方式,報表伺服器管理員可以修改已發行報表中的許多參數屬性。也可以建立連結到相同報表定義的一組參數,針對多種使用者自訂報表。如需詳細資訊,請參閱<設定已發行報表的參數屬性>。

您也可以使用 URL 存取來執行報表及指定參數值。如需詳細資訊,請參閱<使用 URL 存取參數>。

安全性注意事項安全性注意事項

在任何含有 String 類型之參數的報表中,請務必使用可用的值清單 (也稱為有效值清單),並確認執行報表的任何使用者只具有檢視報表資料所需的權限。當您將參數定義為 String 類型時,使用者會看到一個可接受任何值的文字方塊。可用的值清單會限制可輸入的值。如果報表參數繫結至查詢參數,而且您不要使用可用的值清單,則報表使用者可以在文字方塊中輸入 SQL 語法,如此可能會使您的報表及伺服器暴露在 SQL 資料隱碼攻擊的危險之下。如果使用者的權限足以執行新的 SQL 陳述式,伺服器可能會出現不良的結果。

如果報表參數未繫結至查詢參數且參數值未包含在報表中,報表使用者就可以輸入運算式語法、指令碼或 URL 到參數值中,將報表轉譯為 Excel 或 HTML。如果另一個使用者接著檢視報表並按一下轉譯的參數內容,該使用者可能會不小心執行惡意指令碼或連結。

若要減輕不小心執行惡意指令碼的風險,請只從信任的來源開啟轉譯的報表。如需有關保護報表安全的詳細資訊,請參閱<保護報表和資源的安全>。

在此章節中