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

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

例如,下面的查询指定 AUTO 模式;因此,在服务器上执行 XML 格式设置:

SELECT P.FirstName AS F,P.LastName AS L 
FROM Person.Person AS P 
FOR XML AUTO

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

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

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

SELECT P.FirstName as F,P.LastName as L 
FROM Person.Person AS P 
FOR XML AUTO

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

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