Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
他从.xel文件中删除XML,以便在该步骤中有某种方法排除它们。我认为SQL 2017中有一些选项,但我想知道2012年是否有办法做到这一点。或者是一种更好/更有效的方法来执行XML解析步骤(99%的工作都是在这个步骤中进行的)Brad,在您阅读文件的那一_Sql_Sql Server_Xml_Extended Events - Fatal编程技术网

他从.xel文件中删除XML,以便在该步骤中有某种方法排除它们。我认为SQL 2017中有一些选项,但我想知道2012年是否有办法做到这一点。或者是一种更好/更有效的方法来执行XML解析步骤(99%的工作都是在这个步骤中进行的)Brad,在您阅读文件的那一

他从.xel文件中删除XML,以便在该步骤中有某种方法排除它们。我认为SQL 2017中有一些选项,但我想知道2012年是否有办法做到这一点。或者是一种更好/更有效的方法来执行XML解析步骤(99%的工作都是在这个步骤中进行的)Brad,在您阅读文件的那一,sql,sql-server,xml,extended-events,Sql,Sql Server,Xml,Extended Events,他从.xel文件中删除XML,以便在该步骤中有某种方法排除它们。我认为SQL 2017中有一些选项,但我想知道2012年是否有办法做到这一点。或者是一种更好/更有效的方法来执行XML解析步骤(99%的工作都是在这个步骤中进行的)Brad,在您阅读文件的那一刻,您不会得到任何帮助。在SQL Server能够以本机XML类型处理这一问题之前是不可能的。但在进入SQL Server之前,您可能会使用xslt或某些外部应用程序来创建精简文件…@Shnugo我不确定文件导入是否有任何选项(sys.fn\u


他从.xel文件中删除XML,以便在该步骤中有某种方法排除它们。我认为SQL 2017中有一些选项,但我想知道2012年是否有办法做到这一点。或者是一种更好/更有效的方法来执行XML解析步骤(99%的工作都是在这个步骤中进行的)Brad,在您阅读文件的那一刻,您不会得到任何帮助。在SQL Server能够以本机XML类型处理这一问题之前是不可能的。但在进入SQL Server之前,您可能会使用
xslt
或某些外部应用程序来创建精简文件…@Shnugo我不确定文件导入是否有任何选项(sys.fn\u xe\u file\u target\u read\u file(@FilePathNameToImport,null,null,null))我丢失了。文件的偏移量增加了一些参数,但我不知道它们是如何工作的,或者它们到底在做什么,所以我不确定这些是否是选项。Brad,还有一个主意,您可以使用偏移量参数和一些填充器,在暂存表中读取不太多的行,另外还有
.nodes()
谓词以减少解析的行…我已经有了上次导入的日期/时间,我正在从表中提取,因此该部分已经设置好。如果它消除了需要在XML中解析的行数(解析3个字段在我的脚本中花费的时间最长),那么这看起来会有很大帮助。因此,如果这部分在单个字段的选择/解析步骤之前运行,这将有帮助(我相信它会这样做)我只需要测试一下,然后让你know@Brad是的,如果您读取完整的XML并在外部使用
WHERE
进行筛选,或者如果您可以将谓词放在XQuery中以仅返回您正在查找的行,则会产生很大的差异…我遇到一个错误,必须进行1次更新(可能是SQL版本):交叉应用ed.event\u data.nodes('event[@timestamp转换为xs:dateTime?>sql:variable(“@LastRunDateTime”)]')转换为q(n)我必须在xs:dateTime之后添加?以进行正确的转换。我仍在开发中,处理较小的数据集,但这似乎效果很好。我将执行计划与较小的数据进行了比较,每个数据的XML解析步骤的总体计划使用率下降了4-5%(使用XML解析的计划中有大量嵌套内容)这不是一个很高的数字,但随着数据越来越多,这会有很大帮助。另外,我可以省去后面插入中间临时表进行解析的几个步骤,然后运行日期检查并插入到永久表中。有了这个,我可以直接插入到永久表中!这帮了大忙,您可以为了了解XML的内容,也许您可以看看我的另一个问题(同一个项目,不同的部分):
CREATE EVENT SESSION [CaptureObjectUsage_SubmissionEngine] ON SERVER 
ADD EVENT sqlserver.sp_statement_starting(
    -- collect object name but NOT statement, thats not needed
    SET collect_object_name=(1),
    collect_statement=(0)
    WHERE (
    -- this is for functions or SP's
        (
            -- functions
            [object_type]=(8272) 
            -- SProcs
            OR [object_type]=(20038)
        ) 
        AND [sqlserver].[database_name]=N'DBNAMEHERE' 
        AND [sqlserver].[is_system]=(0))
    ) 
ADD TARGET package0.event_file( 
    SET filename=N'c:\Path\CaptureObjectUsage.xel'  -- mine that was default UI gave me
)
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=OFF,STARTUP_STATE=OFF)
GO




-- ***************************************************************************
--      code for importing
-- ***************************************************************************

-- pull data from file path and insert into staging table
INSERT INTO #CaptureObjectUsageFileData (event_data)
SELECT cast(event_data as XML) as event_data
FROM sys.fn_xe_file_target_read_file(@FilePathNameToImport, null, null, null)


-- with the XML.nodes parsing I can insert directly into my final table because it does the logic here
INSERT INTO DBALocal.dbo.DBObjectUsageTracking(DatabaseID, ObjectType, ObjectName, ObjectUsageDateTime)
SELECT DISTINCT @DBID, -- @DBID is variable I set above so I dont need to use DBNAME and take up a ton more space
n.value('(data[@name="object_type"]/text)[1]', 'varchar(500)') AS ObjectType,
n.value('(data[@name="object_name"]/value)[1]', 'varchar(500)') as ObjectName,
CAST(n.value('(@timestamp)[1]', 'datetime') AS SMALLDATETIME) AS [utc_timestamp]
from (
    SELECT event_data
    FROM #CaptureObjectUsageFileData (NOLOCK)
) ed
-- original  before adding the .node logic
--CROSS apply ed.event_data.nodes('event') as q(n)
-- updated to reduce amount of data to import
CROSS apply ed.event_data.nodes('event[@timestamp cast as xs:dateTime? > sql:variable("@LastRunDateTime")]') as q(n)