共通言語ランタイム (CLR) 統合

適用対象: SQL Server Azure SQL Managed Instance

SQL Server と Azure SQL Managed Instance では、ネイティブ共通言語ランタイム (CLR) 統合を SQL Server サーバー側モジュール (プロシージャ、関数、トリガー) として使用して、.NET 言語で機能の一部を実装できます。 CLR では、言語間の統合、コード アクセス セキュリティ、オブジェクトの有効期間の管理、デバッグとプロファイルのサポートなどのサービスがマネージド コードに提供されます。

SQL Server ユーザーとアプリケーション開発者の場合、CLR 統合は、Visual Basic .NET や Visual C# を含む任意の .NET Framework 言語を使用して、ストアド プロシージャ、トリガー、ユーザー定義型、ユーザー定義関数 (スカラー関数とテーブル値関数)、ユーザー定義集計関数を記述できることを意味します。 SQL Server には、プレインストールされている .NET Framework バージョン 4 が含まれています。

この 6 分間のビデオでは、Azure SQL Managed Instance で CLR を使用する方法について説明します。

コード アクセス セキュリティがサポートされなくなりました

CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 PERMISSION_SET = SAFEで作成された CLR アセンブリは、外部システム リソースへのアクセス、アンマネージ コードの呼び出し、sysadmin 特権の取得が可能な場合があります。 SQL Server 2017 (14.x) 以降のバージョンでは、 sp_configure オプション 厳密なセキュリティにより、CLR アセンブリのセキュリティが強化されます。 clr strict security は既定で有効になり、SAFE および EXTERNAL_ACCESS アセンブリを UNSAFE とマークされている場合と同様に扱います。 clr strict security オプションは下位互換性のために無効にできますが、推奨されません。

証明書または非対称キーによってすべてのアセンブリに署名し、master データベースでUNSAFE ASSEMBLYアクセス許可が付与された対応するログインを使用することをお勧めします。 SQL Server 管理者は、データベース エンジンが信頼するアセンブリのリストにアセンブリを追加することもできます。 詳細については、「sys.sp_add_trusted_assembly」を参照してください。

CLR モジュールを使用するタイミング

CLR 統合を使用すると、正規表現、外部リソース (サーバー、Web サービス、データベース)、カスタム暗号化などにアクセスするためのコードなど、.NET Framework で使用できる複雑な機能を実装できます。サーバー側 CLR 統合の利点の一部は次のとおりです。

  • より優れたプログラミング モデル。 .NET Framework 言語は、Transact-SQL よりも多くの点で豊富であり、以前は SQL Server 開発者が使用できなかったコンストラクトと機能を提供します。 開発者は.NET Framework ライブラリの機能を使用することもできます。このライブラリには、プログラミングの問題をすばやく効率的に解決するために使用できる広範なクラス セットが用意されています。

  • 安全性とセキュリティの向上。 マネージド コードは、データベース エンジンによってホストされる共通言語ランタイム環境で実行されます。 SQL Server はこれを使用して、以前のバージョンの SQL Server で使用できる拡張ストアド プロシージャに代わる、より安全で安全な方法を提供します。

  • データ型と集計関数を定義する機能。 ユーザー定義型とユーザー定義集計は、SQL Server のストレージとクエリ機能を拡張する 2 つの新しいマネージド データベース オブジェクトです。

  • 標準化された環境による合理化された開発。 データベース開発は、Microsoft Visual Studio .NET 開発環境の将来のリリースに統合されます。 開発者は、データベース オブジェクトやスクリプトの開発およびデバッグを行う際に、中間層またはクライアント層の .NET Framework コンポーネントやサービスを作成する場合と同じツールを使用できます。

  • パフォーマンスとスケーラビリティが向上する可能性があります。 .NET Framework 言語のコンパイル モデルと実行モデルは、多くの状況で、Transact-SQL を超える優れたパフォーマンスを提供します。

SQL Server 言語拡張機能 は、データベース エンジンに近いランタイム用の代替実行環境を提供します。 SQL CLR と SQL 言語拡張機能の違いについては、「SQL Server 言語拡張機能と CLR を比較する」を参照してください。

次の表に、このセクションの記事を示します。

[アーティクル] 説明
CLR 統合の概要 CLR 統合を使用して構築できるオブジェクトの種類について説明します。 また、CLR 統合を使用してデータベース オブジェクトを構築するための要件についても確認します。
CLR 統合 - 新機能 このリリースの新機能について説明します。
CLR 統合アーキテクチャ - CLR ホスト環境 CLR 統合の設計目標について説明します。
CLR 統合の有効化 CLR 統合を有効にする方法を説明します。