SQL Server审核扩展事件元数据更改

时间:2018-02-23 02:38:10

标签: sql sql-server powershell tsql

我们在SQL Server 2014中运行了扩展事件。我们还有一个每隔几分钟运行一次的任务,并检查Xevent是否正在运行 - >审核Xevent跟踪。

我正在尝试找到一种方法(在T-SQL中)来审核Xevent元数据的更改。 如果Xevent改变(通过改变),或者删除并创建。

无需监控停止和启动会话。

我考虑过Xevent元数据上的哈希函数,但我找不到T-SQL方法来获取Xevent字符串。

知道如何实现这一目标吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

我设法通过使用PowerShell SQLPS模块获取Xevent元数据。 然后在字符串结果上使用Hash函数:

    $server="localhost"
    Import-Module sqlps -DisableNameChecking
    CD SQLSERVER:\
    CD xevent\$server\default\Sessions
    $xe=Get-ChildItem |Where-Object {$_.name -eq $XeName}
    #$xe.Targets
    #$xe.IsRunning
    $Xeventmetadata=$xe.ScriptCreate().GetScript()
    $Xeventmetadata

#Getting String hash value
function Hash($textToHash)
{
    $hasher = new-object System.Security.Cryptography.SHA256Managed
    $toHash = [System.Text.Encoding]::UTF8.GetBytes($textToHash)
    $hashByteArray = $hasher.ComputeHash($toHash)
    foreach($byte in $hashByteArray)
    {
         $res += $byte.ToString()
    }
    return $res;
}
Hash("$Xeventmetadata")