sql server 以EVENTDATA 函数为例获取xml的值

本文详细介绍了在SQL Server中如何利用EVENTDATA函数来提取和解析XML数据,通过实例展示了具体的操作步骤和使用技巧,帮助读者掌握这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--创建空数据库
create database  chl_fromempty
use chl_fromempty
--创建表存储xml数据
create table chl_ddlevendate(fdata xml,fid int identity(1,1),fdatetime datetime default getdate())
--创建DDL触发器获取触发事件的详细信心
create trigger chl_tableddl_getdata on database
for create_table,alter_table,drop_table
as
insert into chl_ddlevendate(fdata) select  EVENTDATA()
--测试,创建表
create table chl001(a int,b char(1),c date)
--查询获取到的XML
select * from chl_ddlevendate 
--以下为获取到的xml的内容
<EVENT_INSTANCE>
  <EventType>CREATE_TABLE</EventType>
  <PostTime>2019-08-15T09:48:23.967</PostTime>
  <SPID>61</SPID>
  <ServerName>HANLIN-PC</ServerName>
  <LoginName>sa</LoginName>
  <UserName>dbo</UserName>
  <DatabaseName>chl_fromempty</DatabaseName>
  <SchemaName>dbo</SchemaName>
  <ObjectName>chl001</ObjectName>
  <ObjectType>TABLE</ObjectType>
  <TSQLCommand>
    <SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
    <CommandText>create table chl001(a int,b char(1),c date)
</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>

--关于EVENTDATA 函数
--https://docs.microsoft.com/zh-cn/sql/relational-databases/triggers/use-the-eventdata-function?view=sql-server-2017

--获取节点的值和节点的信息
SELECT fdata.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)') 获取节点的值 from chl_ddlevendate
--结果
获取节点的值
create table chl001(a int,b char(1),c date)
SELECT fdata.query('(/EVENT_INSTANCE/TSQLCommand)') 节点的信息 from chl_ddlevendate
--结果
节点的信息
<TSQLCommand><SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" /><CommandText>create table chl001(a int,b char(1),c date)
</CommandText></TSQLCommand>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值