DROP DATABASE (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Server Database Engine'in bir örneğinden bir veya daha fazla kullanıcı veritabanı veya veritabanı anlık görüntüsünü kaldırır.

Transact-SQL söz dizimi kuralları

Syntax

SQL Server sözdizimi.

DROP DATABASE [ IF EXISTS ] { database_name | database_snapshot_name } [ ,...n ]
[ ; ]

Azure SQL Veritabanı, Azure Synapse Analytics ve Analytics Platform System syntax.

DROP DATABASE database_name
[ ; ]

Arguments

VARSA

için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler

Veritabanı koşullu olarak sadece zaten varsa düşürür.

database_name

Kaldırılacak veritabanının adını belirtir. Veritabanları listesini görüntülemek için sys.databases katalog görünümünü kullanın.

database_snapshot_name

Kaldırılacak veritabanı anlık görüntüsünün adını belirtir.

Remarks

Bir veritabanı, durumu ne olursa olsun düşürülebilir: çevrimdışı, sadece okunabilir, şüpheli ve benzeri. Bir veritabanının mevcut durumunu görüntülemek için katalog görünümünü sys.databases kullanın.

Bırakılan bir veritabanı yalnızca yedek geri yüklenerek yeniden oluşturulabilir. Veritabanı anlık görüntüleri yedeklenemez ve bu nedenle geri yüklenemiyor.

Bir veritabanı kaldırıldığında, ana veritabanı yedeklenmelidir.

Bir veritabanı düşürüldüğünde, veritabanı SQL Server örneklerinden silinir ve veritabanı tarafından kullanılan fiziksel disk dosyaları da silinir. Veritabanı veya dosyalarından herhangi biri devre dışı bırakıldığında çevrimdışı ise, disk dosyaları silinmez. Bu dosyalar, File Explorer gibi bir dosya yöneticisi kullanılarak manuel olarak silinebilir. Dosya sisteminden dosyaları silmeden mevcut sunucudan bir veritabanını kaldırmak için sp_detach_db kullanın.

Warning

SQL Server 2016 (13.x) ve sonraki sürümlerde, yedekleri olan veritabanını kaldırmak FILE_SNAPSHOT başarılı olur, ancak ilişkili anlık görüntülere sahip veritabanı dosyaları, bu veritabanı dosyalarına atıfta bulunan yedeklemelerin geçersiz kılınmasını önlemek için silinmez. Dosya kısaltılır, ancak yedeklerin korunması için fiziksel olarak silinmez FILE_SNAPSHOT . Daha fazla bilgi için bkz. SQL Server backup and restore with Azure Blob Depolama.

SQL Server

Veritabanı anlık görüntüsünün düşürülmesi, SQL Server örneklerinden veritabanı anlık görüntüsünü silir ve anlık görüntünün kullandığı fiziksel NTFS dosya sistemi seyrek dosyalarını siler. Veritabanı anlık görüntüleri için seyrek dosyaların kullanımı hakkında bilgi için Veritabanı anlık görüntüleri (SQL Server) sayfasına bakınız. Bir veritabanı anlık görüntüsünün düşürülmesi, veritabanı anlık görüntüsüyle ilişkili plan önbelleğindeki girişleri temizler, tüm örnek değil. Plan önbelleğinin temizlenmesi, sonraki tüm yürütme planlarının yeniden derlenmesine neden olur ve sorgu performansında ani, geçici bir düşüşe neden olabilir.

Plan önbelleğindeki her temizlenmiş cachestore için, SQL Server hata günlüğü aşağıdaki bilgilendirici mesajı içerir. Bu ileti, önbellek bu zaman aralığında temizlendiği sürece beş dakikada bir günlüğe kaydedilir.

SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.

Interoperability

SQL Server

İşlemsel çoğaltma için yayımlanmış veya birleştirme replikasyonu için yayımlanmış veya abone edilmiş bir veritabanını kaldırmak için önce çoğaltmayı veritabanından kaldırmalısınız. Bir veritabanı zarar görürse veya replikasyon önce kaldırılamazsa (ya da her ikisi birden birden yapılabilir), çoğu durumda veritabanını çevrimdışı ayarlayıp sonra kaldırarak veritabanını bırakabilirsiniz ALTER DATABASE .

Eğer veritabanı log gönderimiyle ilgileniyorsa, veritabanını kaldırmadan önce log shipping'i kaldırın. Daha fazla bilgi için bkz. Günlük gönderimi hakkında (SQL Server).

Limitations

Sistem veritabanları kaldırılamaz.

Bu DROP DATABASE ifade otomatik commit modunda çalışmalıdır ve açık ya da örtük bir işlemde izin verilmez. Otomatik taahhüt modu varsayılan işlem yönetim modudur.

Warning

Şu anda kullanılan bir veritabanını bırakamazsınız. Bu, herhangi bir kullanıcı tarafından okunma veya yazma için kilitlerin tutulması anlamına gelir. Kullanıcıları veritabanından çıkarmanın bir yolu, ALTER DATABASE veritabanını SINGLE_USER olarak ayarlamaktır. Bu stratejide, ve DROP DATABASE düyünü aynı grupta çalıştırmalısınızALTER DATABASE, böylece tek kullanıcı oturumuna izin verildiğini iddia eden başka bir bağlantıyı önlemen. Daha fazla bilgi için Örnek D'ye bakınız.

SQL Server

Veritabanındaki herhangi bir veritabanı anlık görüntüleri, veritabanı kaldırılmadan önce kaldırılmalıdır.

Stretch Database için veritabanı etkinleştirilmesi uzak verileri kaldırmaz. Uzak verileri silmek istiyorsanız, manuel olarak silmeniz gerekir.

Önemli

Stretch Database, SQL Server 2022 (16.x) ve Azure SQL Veritabanı'nda kullanım dışıdır. Bu özellik, Veritabanı Altyapısı'nın gelecekteki bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.

Azure SQL Veritabanı

Veritabanını bırakmak için veritabanına master bağlı olmanız gerekir.

Bu DROP DATABASE ifade SQL batch'teki tek ifade olmalı ve aynı anda sadece bir veritabanını bırakabilirsiniz.

Azure Synapse Analytics

Veritabanını bırakmak için veritabanına master bağlı olmanız gerekir.

Bu DROP DATABASE ifade SQL batch'teki tek ifade olmalı ve aynı anda sadece bir veritabanını bırakabilirsiniz.

Permissions

SQL Server

Veritabanı üzerindeki izni, ALTER ANY DATABASE izni veya db_owner sabit veritabanı rolü üyeliğini gerektirirCONTROL.

Azure SQL Veritabanı

Sadece sunucu düzeyindeki ana giriş (provisioning süreciyle oluşturulan) veya dbmanager veritabanı rolünün üyeleri veritabanını bırakabilir.

Analiz Platformu Sistemi (PDW)

Veritabanı üzerindeki izni, ALTER ANY DATABASE izni veya db_owner sabit veritabanı rolü üyeliğini gerektirirCONTROL.

Examples

A. Tek bir veritabanını bırak

Aşağıdaki örnek veritabanını Sales kaldırır.

DROP DATABASE Sales;

B. Birden fazla veritabanını kaldırın

Aşağıdaki örnek, listelenen veritabanlarının her birini kaldırmaktadır.

DROP DATABASE Sales, NewSales;

C. Bir veritabanı anlık görüntüsü bırakın

Aşağıdaki örnek, kaynak veritabanını etkilemeden adlandırılan sales_snapshot0600bir veritabanı anlık görüntüsünü kaldırır.

DROP DATABASE sales_snapshot0600;

D. Veritabanının var olup olmadığını kontrol ettikten sonra bırakın

Aşağıdaki örnek önce bir veritabanı adının Sales var olup olmadığını kontrol eder. Eğer öyleyse, örnek veritabanını Sales tek kullanıcı moduna çevirerek diğer tüm oturumların bağlantısını zorla kapatır, ardından veritabanı kaldırılır. SINGLE_USER hakkında daha fazla bilgi için seçeneklere bakabilirsinizALTER DATABASE SET.

USE tempdb;

GO

DECLARE @SQL AS NVARCHAR (1000);

IF EXISTS (SELECT 1
           FROM sys.databases
           WHERE [name] = N'Sales')
    BEGIN
        SET @SQL = N'USE [Sales];

                 ALTER DATABASE Sales SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
                 USE [tempdb];

                 DROP DATABASE Sales;';
        EXECUTE (@SQL);
    END