Aracılığıyla paylaş


Derlemeyi bırakma

Şunlar için geçerlidir: SQL Server

CREATE ASSEMBLY deyimi kullanılarak SQL Server'a kaydedilen derlemeler, sağladıkları işlev artık gerekli olmadığında silinebilir veya bırakılabilir. Bir derlemeyi bırakmak, derlemeyi ve hata ayıklama dosyaları gibi tüm ilişkili dosyalarını veritabanından kaldırır. Bir derlemeyi bırakmak için aşağıdaki söz dizimiyle DROP ASSEMBLY deyimini kullanın:

DROP ASSEMBLY MyDotNETAssembly;

DROP ASSEMBLY, şu anda çalışmakta olan derlemeye başvuran hiçbir kodu engellemez, ancak DROP ASSEMBLY yürütildikten sonra derleme kodunu çağırma girişimleri başarısız olur.

DROP ASSEMBLY, derlemeye veritabanında bulunan başka bir derleme tarafından başvurulursa veya geçerli veritabanındaki ortak dil çalışma zamanı (CLR) işlevleri, yordamlar, tetikleyiciler, kullanıcı tanımlı türler (UDA'lar) veya kullanıcı tanımlı toplamalar (UDA'lar) tarafından kullanılıyorsa bir hata döndürür. Derlemede bulunan yönetilen veritabanı nesnelerini silmek için önce DROP AGGREGATE, DROP FUNCTION, DROP PROCEDURE, DROP TRIGGERve DROP TYPE deyimlerini kullanın.

Veritabanından UDT kaldırma

DROP TYPE deyimi geçerli veritabanından bir UDT kaldırır. Bir UDT bırakıldıktan sonra, DROP ASSEMBLY deyimini kullanarak derlemeyi veritabanından bırakabilirsiniz.

Nesneler aşağıdaki durumlarda olduğu gibi UDT'ye bağımlıysa DROP TYPE deyimi başarısız olur:

  • Veritabanında UDT kullanılarak tanımlanan sütunlar içeren tablolar.

  • veritabanında WITH SCHEMABINDING yan tümcesiyle oluşturulan UDT'nin değişkenlerini veya parametrelerini kullanan işlevler, saklı yordamlar veya tetikleyiciler.

UDT bağımlılıklarını bulma

Önce tüm bağımlı nesneleri bırakmanız ve ardından DROP TYPE deyimini yürütmeniz gerekir. Aşağıdaki Transact-SQL sorgusu, AdventureWorks2025 veritabanında UDT kullanan tüm sütunları ve parametreleri bulur.

USE Adventureworks2022;
GO

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
     INNER JOIN sys.objects AS o
         ON o.object_id = c.object_id
     INNER JOIN sys.assembly_types AS at
         ON at.user_type_id = c.user_type_id;