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

--创建空数据库
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的内容

  CREATE_TABLE
  2019-08-15T09:48:23.967
  61
  HANLIN-PC
  sa
  dbo
  chl_fromempty
  dbo
  chl001
  TABLE
  
    
    create table chl001(a int,b char(1),c date)

  


--关于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
--结果
节点的信息
create table chl001(a int,b char(1),c date)

 

 

你可能感兴趣的:(MSSQL,study)