Management Studio 中的自訂報表
在 SQL Server Management Studio 中,許多 [物件總管] 節點會顯示一組由 Microsoft 建立的標準報表。這些報表會摘要列出經常要求的伺服器資訊。從 SQL Server 2005 Service Pack 2 開始,管理員就可以從 Management Studio 執行在 Business Intelligence Development Studio 中建立的自訂報表。
實作
自訂報表會儲存成報表定義 (.rdl) 檔案,而且這些檔案是使用報表定義語言 (RDL) 所建立的。RDL 會包含 XML 格式之報表的資料擷取和配置資訊。RDL 是一種開放式結構描述。開發人員可以使用其他屬性和元素來擴充 RDL。報表可以執行報表內的任何有效 Transact-SQL 陳述式。
如果 [物件總管] 連接至某部伺服器,而且自訂報表參考該節點的報表參數,則這些報表就可以在目前 [物件總管] 選取範圍的內容中執行。這可讓報表使用目前的內容 (例如目前的資料庫) 或一致的內容 (例如將指派的資料庫指定為包含在自訂報表中之 Transact-SQL 陳述式的一部分)。
執行自訂報表
您可以利用下列方式在 Management Studio 中執行自訂報表:
以滑鼠右鍵按一下 [物件總管] 中的節點、指向 [報表],然後以滑鼠左鍵按一下 [自訂報表]。在 [開啟檔案] 對話方塊中,找出包含 .rdl 檔的資料夾,然後開啟適當的報表檔案。
以滑鼠右鍵按一下 [物件總管] 中的節點、指向 [報表]、指向 [自訂報表],然後從最近使用過的檔案清單中選取自訂報表。
限制
當您使用自訂報表時,請考量下列限制:
為了防止意外執行惡意程式碼,Management Studio 無法設定為自動執行報表,即使檔案系統設定為將 .rdl 檔與 Management Studio 產生關聯也一樣。報表無法以程式設計方式在 Management Studio 中執行,而且無法透過 Management Studio 從命令列執行。
您可以在未產生預期值的內容中執行自訂報表。例如,您可以在未涉及複寫的資料庫內容中執行有關複寫的報表,也可以用無權存取產生正確報表所需之資訊的使用者身分來執行報表。自訂報表的建立者會負責報表結構及其內容的有效性。
您無法將自訂報表加入至標準報表的清單。
報表所處理的程式碼可能會影響伺服器效能。
自訂報表將無法支援子報表。
報表中每個查詢的命令文字都不得透過運算式定義。
命令 (查詢) 中所使用的任何查詢參數只能參考單一報表參數,而無法使用任何運算式運算子。
報表命令 (查詢) 只支援「文字」和「預存程序」命令類型。
報表架構不會提供任何逸出參數給查詢。查詢作者必須確定其查詢不會遭受 SQL 資料隱碼攻擊。
管理自訂報表
我們建議擁有許多自訂報表的使用者,最好使用具有適當 NTFS 檔案系統權限的檔案系統資料夾來組織這些報表。
權限
自訂報表會使用目前使用者的權限來執行。若要防止惡意使用者變更報表所執行的查詢,包含報表檔案之檔案系統資料夾的權限應該要設定為限制存取。
使用者以及 SQL Server 服務所使用的帳戶,都需要包含報表檔案之檔案系統資料夾的讀取權。
雖然您可以在報表中內嵌任何有效的 .NET Framework 命令,但是此命令將不會執行。
注意 |
---|
您可以報表中內嵌任何有效 Transact-SQL 陳述式,然後從報表中執行。在高權限使用者帳戶底下執行報表可讓任何內嵌的指示執行,而不會受到挑戰。 |