SQL Server用のSQLCLRベースのストアドプロシージャを作成します。ご存じのとおり、.NET Frameworkの複数のバージョンに対してDLLを構築できます。 SQL Serverのどのバージョンが.NET Frameworkのどのバージョンをサポートするかを説明するリファレンスが見つかりません。誰かが私に正しい方向を示すのを手伝ってくれる?
明確にするために、CLRの単一バージョンには通常、それが動作する.NET Frameworkの複数のバージョンがあります。ただし、.NET Frameworkの単一バージョンは、CLRの特定の1つのバージョンでのみ機能します。たとえば、CLRバージョン2.0は.NET Frameworkバージョン2.0、3.0、および3.5で機能し、CLRバージョン4.0は.NET Frameworkのすべての4.xバージョン(4.0、4.5 [.x]、4.6 [など)で機能します。 x]、4.7 [.x]など)。 CLRバージョンとフレームワークバージョンの関係のグラフを確認するには、MSDNページの 。NET Frameworkのバージョンと依存関係 を参照してください。
SQLCLRコードに関しては、SQL Serverは単一バージョンのCLRでのみ機能し、特定のバージョンはSQL Serverのバージョンに依存します。 SQL Server 2005、2008、および2008 R2はCLRバージョン2でのみ機能します。CLRバージョン2は.NET Frameworkバージョン2.0、3.0、および3.5でのみ機能するため、SQL Server 2005、2008、および2008 R2はでのみ機能します。 NET Frameworkバージョン2.0、3.0、および3.5。
もちろん、SQL Server 2005のCLR統合機能(その初期バージョン)は.NET Frameworkバージョン2.0(当時利用可能だったもの)を中心に構築されているため、.NET Frameworkバージョン3.0にはいくつかの新しいライブラリがあります。手動でインポートしないとSQL Server 2005で機能しない3.5(つまりSystem.CoreとSystem。 Xml.Linq)。同じように、SQL Server 2012、2014、2016、2017、2019は、.NET Frameworkバージョン4.0、4.5 [.x]、4.6 [.x]、および4.7 [で動作するCLRバージョン4に静的にリンクされています。バツ]。
両方から返される情報に関してSystem.Environment.Version
(.NETコード)およびSELECT [version] FROM sys.dm_clr_properties;
、[〜#〜] clr [〜#〜]バージョン、ではない。NET Frameworkバージョン。したがって、2.0または4.0を報告する2つのことを混同しないように注意してください。これは、フレームワークバージョン2.0または4.0しか使用できないことを意味します。
幸い、後方互換性があるため、CLR 2フレームワークバージョン(2.0、3.0、および3.5)に対してコンパイルされたコードは、CLRバージョン4であっても、SQL Server 2012以降で再コンパイルする必要なく実行できます。
したがって、一般に2.0のターゲットフレームワークバージョンを使用しても問題はありませんが、2.0を超えるフレームワークバージョンを使用できます。
SQLCLRコードの開発の詳細については、私が書いた次の記事(およびシリーズ全般)を確認してください。
SQLCLRレベル5への階段:開発(SQL Server内での.NETの使用)
一般的なSQLCLRの操作の詳細については、次のWebサイトをご覧ください。 SQLCLR Info