使用 Powershell 中的QueryTableXEventData类,我能够非常快速地解析 100 个 XEL 文件并使用SQLBulkCopy将它们的内容导出到 SQL Server 中的表
例子:
$events = new-object Microsoft.SqlServer.XEvent.Linq.QueryableXEventData
("\\some_file_path\XELog_Files*.xel")
我没有看到 $fields 数组中的 File 属性。
$event | Select-Object -ExpandProperty Fields
is_cached System.Boolean True
is_recovered System.Boolean False
is_dac System.Boolean False
database_id System.UInt32 73
packet_size System.UInt32 8000
options System.Byte[] {32, 0, 0, 40...}
options_text System.String
database_name System.String
或者在 $events
Name : login
UUID : 13e22e12-3cb8-49bf-a3e1-131faa95601c
Package : Microsoft.SqlServer.XEvent.Linq.Internal.XEventInteropPackage
Metadata : Microsoft.SqlServer.XEvent.Linq.Internal.XEventInteropEventMetadata
Timestamp : 18/08/2020 03:41:37 +00:00
Fields : {is_cached, is_recovered, is_dac, database_id...}
Actions : {server_instance_name, database_name, database_id, client_hostname...}
Location : Microsoft.SqlServer.XEvent.Linq.EventLocator
我可以在 SQLBulkCopy 或 QueryTableXEventData 中使用当前正在读取或导出文件名的属性吗?
我不相信文件名是通过属性公开的。
QueryableXEventData
您可以获取文件列表并单独处理每个文件,而不是将通配符路径传递给构造函数: