从 CLR 数据库对象进行 XML 序列化

XML 序列化是以下两种情况所必需的:

  • 从公共语言运行时 (CLR) 对象调用 Web 服务。

  • 将用户定义类型 (UDT) 转换为 XML。

通过调用 XmlSerializer 类执行 XML 序列化通常将生成一个附加的序列化程序集,该程序集将重载到具有源程序集的项目中。但出于安全原因,此重载在 CLR 中被禁用。因此,若要在 SQL Server 内调用某一 Web 服务或者执行从 UDT 到 XML 的转换,该程序集必须使用称作 Sgen.exe 的工具手动创建,该工具随 .NET Framework 提供,用于生成必需的序列化程序集。在调用 XmlSerializer 时,必须通过以下步骤手动创建序列化程序集:

  1. 运行随 .NET Framework SDK 提供的 Sgen.exe 工具,以便创建包含用于源程序集的 XML 序列化程序的程序集。

  2. 使用 CREATE ASSEMBLY 语句在 SQL Server 中注册生成的程序集。

有关在执行 XML 序列化时可能收到的错误的信息,请参阅以下 Microsoft 支持文章:Cannot load dynamically generated serialization assembly(无法加载动态生成的序列化程序集)。

有关 XML 序列化程序不支持的数据类型的信息,请参阅 .NET Framework 文档中的“.NET Framework 中 XML 架构的绑定支持”。