分享方式:


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 和更新版本

不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 開發新的應用程式。

針對新專案,請使用下列其中一個驅動程式:

針對 SQL Server 資料庫引擎 (2012 到 2019 版) 的隨附元件 SQLNCLI,請參閱支援生命週期例外狀況

在 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 功能