共通言語ランタイムの統合

適用対象:SQL ServerAzure SQL Managed Instance

Microsoft SQL ServerとAzure SQL Managed Instanceを使用すると、ネイティブ共通言語ランタイム (CLR) 統合を使用して、サーバー側モジュール (プロシージャ、関数、トリガー) SQL Server使用して、.NET 言語で機能の一部を実装できます。 CLR では、言語間の統合、コード アクセス セキュリティ、オブジェクトの有効期間の管理、デバッグとプロファイルのサポートなどのサービスがマネージド コードに提供されます。 SQL Serverユーザーとアプリケーション開発者の場合、CLR 統合は、Microsoft Visual Basic .NET や Microsoft Visual C# を含む任意の.NET Framework言語を使用して、ストアド プロシージャ、トリガー、ユーザー定義型、ユーザー定義関数 (スカラーとテーブル値)、およびユーザー定義集計関数を記述できることを意味します。 SQL Serverには、.NET Framework バージョン 4 がプレインストールされています。

警告

CLR では、セキュリティ境界としてサポートされなくなった、.NET Framework のコード アクセス セキュリティ (CAS) が使用されます。 PERMISSION_SET = SAFE で作成された CLR アセンブリが、外部のシステム リソースにアクセスし、非管理対象コードを呼び出し、sysadmin 特権を取得できる場合があります。 SQL Server 2017 (14.x) 以降、CLR アセンブリのセキュリティを強化するために clr strict security という sp_configure オプションが導入されました。 clr strict security は既定で有効になり、SAFE および EXTERNAL_ACCESS アセンブリを UNSAFE とマークされている場合と同様に扱います。 clr strict security オプションは、旧バージョンとの互換性のために無効にできますが、これは推奨されません。 Microsoft では、master データベースで UNSAFE ASSEMBLY アクセス許可が付与されている対応するログインを含む証明書または非対称キーで、すべてのアセンブリに署名することをお勧めします。 詳しくは、「CLR の厳密なセキュリティ」をご覧ください。 SQL Server 管理者は、データベース エンジンが信頼するアセンブリのリストにアセンブリを追加することもできます。 詳細については、「sys.sp_add_trusted_assembly」を参照してください。

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

CLR モジュールを使用する場合

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

  • 優れたプログラミング モデル。 .NET Framework言語は、Transact-SQL よりも多くの点で豊富であり、これまでSQL Server開発者が利用できなかったコンストラクトと機能を提供します。 また、開発者は .NET Framework ライブラリの機能も使用できます。.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 統合を有効にする方法を説明します。

参照

.NET Frameworkのインストール (SQL Serverのみ)
CLR 統合のパフォーマンス