アセンブリの削除

新規 : 2005 年 12 月 5 日

CREATE ASSEMBLY ステートメントを使用して Microsoft SQL Server に登録された各アセンブリは、それにより提供される機能が不要になったときには、削除できます。アセンブリを削除すると、アセンブリと、デバッグ ファイルなどこれに関連するファイルがすべて、データベースから削除されます。アセンブリを削除するには、DROP ASSEMBLY ステートメントを次の構文で使用します。

DROP ASSEMBLY MyDotNETAssembly

DROP ASSEMBLY は、現在実行中のアセンブリを参照するコードに影響を与えることはありませんが、DROP ASSEMBLY を実行後は、アセンブリ コードを起動しようとすると失敗します。

アセンブリがデータベースに存在する別のアセンブリにより参照されている場合、または、アセンブリが現在のデータベースで共通言語ランタイム (CLR) 関数、プロシージャ、トリガ、ユーザー定義型 (UDT)、ユーザー定義集計 (UDA) により使用されている場合、DROP ASSEMBLY はエラーを返します。まず、DROP AGGREGATE、DROP FUNCTION、DROP PROCEDURE、DROP TRIGGER、および DROP TYPE ステートメントを使用して、アセンブリに含まれるすべてのマネージ データベース オブジェクトを削除します。

データベースからの UDT の削除

DROP TYPE ステートメントを使用すると、現在のデータベースから UDT が削除されます。UDT を削除すると、DROP ASSEMBLY ステートメントを使用してデータベースからアセンブリを削除できます。

次の状況のように、オブジェクトが UDT に依存している場合、DROP TYPE ステートメントは失敗します。

  • UDT を使用して定義した列を含むデータベース内のテーブル。
  • WITH SCHEMABINDING 句を使用してデータベースに作成した UDT の変数またはパラメータを使用する関数、ストアド プロシージャ、またはトリガ。

UDT 依存関係の検出

最初にすべての依存オブジェクトを削除してから、DROP TYPE ステートメントを実行する必要があります。次の Transact-SQL クエリでは、AdventureWorks データベースで、UDT を使用するすべての列とパラメータを検索しています。

USE Adventureworks;
SELECT o.name AS major_name, o.type_desc AS major_type_desc
     , c.name AS minor_name, c.type_desc AS minor_type_desc
     , at.assembly_class
  FROM (
        SELECT object_id, name, user_type_id, 'SQL_COLUMN' AS type_desc
          FROM sys.columns
     UNION ALL
        SELECT object_id, name, user_type_id, 'SQL_PROCEDURE_PARAMETER'
          FROM sys.parameters
     ) AS c
  JOIN sys.objects AS o
    ON o.object_id = c.object_id
  JOIN sys.assembly_types AS at
    ON at.user_type_id = c.user_type_id; 

参照

概念

CLR 統合アセンブリの管理
アセンブリの変更
アセンブリの作成

その他の技術情報

DROP AGGREGATE (Transact-SQL)
DROP FUNCTION (Transact-SQL)
DROP PROCEDURE (Transact-SQL)
DROP TRIGGER (Transact-SQL)
DROP TYPE (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手