共用方式為


執行 SQL Server Profiler 所需的許可權

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

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

注意

SQL 追蹤和 SQL Server Profiler 已淘汰。 Microsoft.SqlServer.Management.Trace包含 SQL Server Trace 和 Replay 物件的Microsoft命名空間也已被取代。

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

請改用擴充事件。 如需擴充事件概觀的詳細資訊,請參閱快速入門:擴充事件使用 SSMS XEvent 分析工具

備註

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

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

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

  • 當您嘗試從 SQL Server Profiler 連線到 Azure SQL Database 時,它錯誤地擲回誤導性錯誤訊息:

    In order to run a trace against SQL Server, you must be a member of **sysadmin** fixed server role or have the ALTER TRACE permission.
    

    訊息應該會指出 SQL Server Profiler 不支援 Azure SQL Database。

用來重播追蹤記錄的許可權

重新執行追蹤也需要重新執行追蹤的使用者具有 ALTER TRACE 許可權。

不過,在重新執行期間,如果正在重新執行的追蹤中遇到 Audit Login 事件,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. 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 重新執行追蹤許可權的螢幕快照。