次の方法で共有


FOR XML のセキュリティに関する注意点 (SQLXML 4.0)

適用対象: SQL Server Azure SQL Database

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>