SQL Server Native Client 中的大型 CLR User-Defined类型

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

已从 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中删除SQL Server Native Client(通常缩写为 SNAC)。 不建议在新应用程序开发工作中使用 SQL Server Native Client(SQLNCLI 或 SQLNCLI11)和旧版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB)。 请在此后切换为使用新版 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新版的 Microsoft OLE DB Driver for SQL Server。 对于作为 SQL Server 数据库引擎组件附带的 SQLNCLI (版本 2012 到 2019) ,请参阅此支持生命周期异常

在 SQL Server 2005 中,公共语言运行时 (CLR) 中的用户定义类型 (UDT) 已限制为最大 8,000 字节。 这一限制在 SQL Server 2008 (10.0.x) 和更高版本中已取消。 CLR UDT 现在以针对大型对象 (LOB) 类型的类似方式处置。 也就是说,小于或等于 8,000 字节的 UDT 在行为上与 SQL Server 2005 中相同,但支持更大的 UDT 并且将其大小报告为“无限制”。

有关详细信息,请参阅 大型 CLR User-Defined 类型 (OLE DB) 大型 CLR User-Defined类型 (ODBC)

用例

对于 ODBC,对大型 UDT 的支持包括能够分块将 UDT 值作为执行时数据参数发送。 这是使用 SQLPutData 完成的。

对于 OLE DB,对大型 UDT 的支持包括能够通过使用 ISequentialStream 绑定在服务器之间传送 UDT 值。

小于或等于 8,000 字节的 UDT 在行为上与 SQL Server 2005 中相同。 对于 OLE DB,仍可以通过使用 ISequentialStream 绑定来流式传输小型 UDT。

有时候,本机代码将必须理解 CLR UDT 的内容,但将不必实例化托管对象。 在此情况下,您可以使用自定义序列化将服务器上的 UDT 值转换为客户端的已知格式。

对于具有现有数据访问代码的应用程序,您可以通过在本机 API 中检索 UDT 并通过在混合模式应用程序中使用 C++ CLI interop 实例化它们,在客户端上利用 CLR UDT 行为。

另请参阅

SQL Server Native Client 功能