SQL Server Native Client 中的大型 CLR 使用者定義型別

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

重要

SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 (16.x) 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。 往後請改用新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新的 Microsoft ODBC Driver for SQL Server。 如需 SQL Server 資料庫引擎元件隨附的 SQLNCLI(版本 2012 到 2019),請參閱此 支援生命週期例外狀況

在 SQL Server 2005,Common Language Runtime (CLR) 中的使用者定義型別 (UDT) 在大小上限制為 8,000 個位元組。 在 SQL Server 2008 (10.0.x) 和更新版本中,此限制已提高。 CLR UDT 現在會以大型物件 (LOB) 類型類似的方式處理。 也就是說,小於或等於 8,000 個位元組的 UDT 行為與 SQL Server 2005 相同,但是支援較大的 UDT,而且會將其大小報告為「無限制」。

如需詳細資訊,請參閱 大型 CLR 使用者定義型別 (OLE DB) 大型 CLR 使用者定義型別 (ODBC)。

使用案例

針對 ODBC,支援大型 UDT 包含以片段的形式傳送 UDT 值作為資料執行參數的能力。 這是使用 SQLPutData 完成的。

對於 OLE DB,大型 UDT 的支援包括能夠使用 ISequentialStream 繫結,在伺服器來回串流 UDT 值。

小於或等於 8,000 個位元組的 UDT 行為如同在 SQL Server 2005 中的行為。 對於 OLE DB,您仍然可以使用 ISequentialStream 繫結來串流處理小型 UDT。

原生程式碼有時候必須了解 CLR UDT 的內容,但不必具現化 Managed 物件。 如果是這種情況,您可以使用自訂序列化,將伺服器上的 UDT 值轉換為用戶端熟知的格式。

對於擁有現有資料存取程式碼的應用程式,您可以透過原生 API 擷取 UDT,並使用混合模式應用程式中的 C++ CLI Interop 進行具現化,藉以利用用戶端上的 CLR UDT 行為。

另請參閱

SQL Server Native Client 功能