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

适用于:SQL Server Azure SQL 数据库

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>