執行 SQL Server Profiler 所需的權限

適用於:SQL ServerAzure SQL 受控執行個體

根據預設,執行 SQL Server Profiler 時,所需的使用者權限與用來建立追蹤的 Transact-SQL 預存程序相同。 若要執行 SQL Server Profiler,使用者必須被授與 ALTER TRACE 權限。 如需詳細資訊,請參閱 GRANT 伺服器權限 (Transact-SQL)

重要

SQL 追蹤所擷取的查詢計劃和查詢文字,以及其他方法 (例如動態管理檢視和函式 (DMV、DMF)、擴充事件) 可以包含敏感性資訊。 因此,根據最低權限的原則,權限 ALTER TRACE、SHOWPLAN 和涵蓋權限 VIEW SERVER STATE 應該只授與需要這些權限才能滿足其工作功能的人員。

此外,我們也建議您只將執行程序表檔案或是包含執行程序表相關事件的追蹤檔案儲存到使用 NTFS 檔案系統的位置,並建議您將存取權限制為有權檢視潛在敏感性資訊的使用者。

重要

SQL 追蹤和 SQL Server Profiler 已淘汰。 包含 Microsoft SQL Server 追蹤和重新執行物件的 Microsoft.SqlServer.Management.Trace 命名空間也會被淘汰。

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

請改用擴充事件。 如需延伸事件的詳細資訊,請參閱快速入門:SQL Server 中的延伸事件SSMS XEvent 分析工具

注意

支援適用於 Analysis Services 工作負載的 SQL Server Profiler。

注意

當嘗試從 SQL Server Profiler 連線至 Azure SQL 資料庫時,會錯誤地擲回具誤導性的錯誤訊息,如下所示:

  • 若要對 SQL Server 執行追蹤,則必須為系統管理員固定伺服器角色的成員,或具有「改變追蹤」權限。

此訊息原本應說明 SQL Server Profiler 不支援 Azure SQL Database。

用來重新執行追蹤的權限

重新執行追蹤時,執行的使用者也必須要有 ALTER TRACE 權限。

然而,在重新執行期間,如果所重新執行的追蹤發生稽核登入事件,則 SQL Server Profiler 會使用 EXECUTE AS 命令。 SQL Server Profiler 會使用 EXECUTE AS 命令來模擬與該登入事件相關聯的使用者。

如果 SQL Server Profiler 在重新執行的追蹤中遇到登入事件,就會執行下列權限檢查:

  1. User1 (具有 ALTER TRACE 權限) 開始重新執行追蹤。

  2. 在重新執行的追蹤中,User2 發生登入事件。

  3. SQL Server Profiler 會使用 EXECUTE AS 命令來模擬 User2。

  4. Microsoft SQL Server 會嘗試驗證 User2,根據結果,會發生下列其中一種情形:

    1. 如果無法驗證 User2,SQL Server Profiler 會傳回錯誤,並以 User1 的身分繼續重新執行追蹤。

    2. 若成功驗證 User2,就會以 User2 的身分繼續重新執行追蹤。

  5. 在目標資料庫上檢查 User2 的權限,根據檢查結果,會發生下列其中一種情形:

    1. 如果 User2 擁有目標資料庫的權限,則已模擬成功,而且是以 User2 的身分來重新執行追蹤。

    2. 如果 User2 沒有目標資料庫的權限,伺服器會檢查該資料庫上是否有 Guest 使用者。

  6. 在目標資料庫上檢查是否有 Guest 使用者,根據檢查結果,會發生下列其中一種情形:

    1. 若有 Guest 帳戶存在,就會以 Guest 帳戶來重新執行追蹤。

    2. 如果目標資料庫沒有 Guest 帳戶,就會傳回錯誤,並以 User1 的身分來重新執行追蹤。

下圖顯示重新執行追蹤時,檢查權限的程序:

SQL Server Profiler replay trace permissions.

另請參閱