FOR XML 安全注意事项 (SQLXML 4.0)

FOR XML AUTO 模式生成一个 XML 层次结构,其中元素名称映射到表名,属性名称映射到列名。 这会公开数据库表和列信息。 使用 AUTO 模式(服务器端格式)时,可以通过在查询中指定表和列别名来隐藏数据库信息。 这些别名在生成的 XML 文档中作为元素和属性名称返回。

例如,以下查询指定 AUTO 模式;因此,XML 格式是在服务器上完成的:

SELECT C.FirstName as F,C.LastName as L   
FROM Person.Contact C   
FOR XML AUTO  

在生成的 XML 文档中,别名用于元素和属性名称:

<?xml version="1.0" encoding="utf-8" ?>   
<root>  
  <C F="Nancy" L="Fuller" />   
  <CE F="Andrew" L="Peacock" />   
  <C F="Janet" L="Leverling" />   
  ...  
</root>  

使用 NESTED 模式(客户端格式设置)时,只为生成的 XML 文档中的属性返回别名。 基表的名称始终作为元素名称返回。 例如,以下查询指定 NESTED 模式。

SELECT C.FirstName as F,C.LastName as L   
FROM Person.Contact C   
FOR XML AUTO  

在生成的 XML 文档中,基表的名称将作为元素名称返回,并且不使用表别名:

<?xml version="1.0" encoding="utf-8" ?>   
<root>  
  <Person.Contact F="Nancy" L="Fuller" />   
  <Person.Contact F="Andrew" L="Peacock" />   
  <Person.Contact F="Janet" L="Leverling" />   
       ...  
</root>