我们在SQL Server 2014中运行了扩展事件。我们还有一个每隔几分钟运行一次的任务,并检查Xevent是否正在运行 - >审核Xevent跟踪。
我正在尝试找到一种方法(在T-SQL中)来审核Xevent元数据的更改。 如果Xevent改变(通过改变),或者删除并创建。
无需监控停止和启动会话。
我考虑过Xevent元数据上的哈希函数,但我找不到T-SQL方法来获取Xevent字符串。
知道如何实现这一目标吗?
谢谢,
答案 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")