Aracılığıyla paylaş


sp_detach_db (Transact-SQL)

Şunlar için geçerlidir: SQL Server

Şu anda kullanılmayan bir veritabanını sunucu örneğinden ayırır ve isteğe bağlı olarak UPDATE STATISTICS tüm tablolarda çalışmadan önce ayrılır.

Çoğaltılan bir veritabanının ayrılması için yayınlanmamış olması gerekir. Daha fazla bilgi için, bu makalenin ilerleyen bölümlerinde Açıklamalar bölümüne bakınız.

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_detach_db
    [ [ @dbname = ] N'dbname' ]
    [ , [ @skipchecks = ] N'skipchecks' ]
    [ , [ @keepfulltextindexfile = ] N'keepfulltextindexfile' ]
[ ; ]

Arguments

[ @dbname = ] N'dbname'

Ayrılacak veritabanının adı. @dbname, varsayılanı ile sysname.

[ @skipchecks = ] N'skipchecks'

Atlayıp atlamayacağını veya çalıştırılmamasını UPDATE STATISTICSbelirtir. @skipchecksnvarchar(10)'dur ve varsayılan olarak .NULL Atlamak UPDATE STATISTICSiçin , belirtin true. Açıkça çalıştırmak UPDATE STATISTICSiçin , falsebelirtin .

Varsayılan olarak, UPDATE STATISTICS tablolar ve indekslerdeki verilerle ilgili bilgileri güncellemek için yapılır. Performans, UPDATE STATISTICS yalnızca okunabilir medyaya taşınacak veritabanları için faydalıdır.

[ @keepfulltextindexfile = ] N'keepfulltextindexfile'

Veritabanı ayırma işlemi sırasında veritabanına bağlı tam metin indeks dosyasının düşürülmediğini belirtir. @keepfulltextindexfilenvarchar(10)'dur ve varsayılan olarak .true

  • Eğer @keepfulltextindexfilefalseise, veritabanı yalnızca okunabilir değilse, veritabanına bağlı tüm tam metin indeks dosyaları ve tam metin indeksin meta verileri kaldırılır.
  • Eğer NULL veya true, tam metinle ilgili meta veriler saklanır.

Önemli

Bu özellik, SQL Server'ın gelecek 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.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Sonuç kümesi

Yok.

Açıklamalar

Bir veritabanı ayrıldığında, tüm meta verileri bırakılır. Veritabanı herhangi bir giriş hesabının varsayılan veritabanı ise, master varsayılan veritabanı olur.

Uyarı

Tüm giriş hesaplarının varsayılan veritabanını nasıl göreceğinize dair bilgi için sp_helplogins'a bakınız. Gerekli izinlere sahipseniz, ALTER LOGIN kullanarak yeni bir varsayılan veritabanı atayabilirsiniz.

Sınırlamalar

Aşağıdaki durumlardan herhangi biri doğruysa, bir veritabanı ayrılamaz:

  • Veritabanı şu anda kullanılmaktadır. Daha fazla bilgi için bkz. Münhasır erişim edin.

  • Çoğaltılırsa veritabanı yayınlanır.

    Veritabanını ayırmadan önce, yayınlamayı devre dışı bırakarak sp_replicationdboption çalıştırmalısınız.

    Eğer kullanamıyorsan sp_replicationdboption, sp_removedbreplication çalıştırarak replikasyonu kaldırabilirsin.

  • Veritabanında bir veri tabanı anlık görüntüsü vardır.

    Veritabanını ayırmadan önce tüm anlık görüntüleri bırakmanız gerekir. Daha fazla bilgi için Veritabanı Anlık Fotoğrafı Bırakın.

    Bir veritabanı anlık görüntüsü ayrılamaz veya eklenebilir.

  • Veritabanı yansıtılıyor.

    Veritabanı aynalama oturumu sona ermeden veritabanı ayrılamaz. Daha fazla bilgi için Veritabanı Aynalamasının Kaldırılması (SQL Server) bölümüne bakınız.

  • Veritabanı şüpheli.

    Şüpheli veritabanını acil durum moduna sokmadan önce veritabanını ayırmanız gerekir. Bir veritabanını acil duruma nasıl sokmak gerektiği hakkında daha fazla bilgi için bakınız: ALTER DATABASE.

  • Veritabanı bir sistem veritabanıdır.

Özel erişim elde edin

Bir veritabanını ayırmak, veritabanına özel erişim gerektirir. Eğer ayırmak istediğiniz veritabanı kullanılıyorsa, onu ayırmadan önce, veritabanını münhasır erişim için moda SINGLE_USER ayarlayın.

Veritabanını , SINGLE_USERolarak ayarlamadan önce seçeneğin AUTO_UPDATE_STATISTICS_ASYNC olarak OFFayarlandığını kontrol edin. Bu seçenek , ONolarak ayarlandığında, istatistikleri güncellemek için kullanılan arka plan iş parçacığı veritabanına karşı bağlantı kurar ve tek kullanıcı modunda veritabanına erişemiyorsunuz. Daha fazla bilgi için bkz. Veritabanını tek kullanıcı moduna ayarlama.

Örneğin, aşağıdaki ALTER DATABASE ifade, tüm mevcut kullanıcılar veritabanından koptuktan sonra AdventureWorks2025 veritabanına münhasır erişim sağlar.

USE master;

ALTER DATABASE AdventureWorks2022
SET SINGLE_USER;
GO

Mevcut kullanıcıları hemen veya belirli bir saniye içinde veritabanından çıkarmak için bu ROLLBACK seçeneği de kullanabilirsiniz.

ALTER DATABASE <database_name>
SET SINGLE_USER
WITH ROLLBACK <rollback_option>;

Daha fazla bilgi için bkz . ALTER DATABASE.

Bir veritabanını yeniden ekleyin

Ayrılmış dosyalar kalır ve (or CREATE DATABASE seçeneğiyle) FOR ATTACH kullanılarak FOR ATTACH_REBUILD_LOG yeniden eklenebilir. Dosyalar başka bir sunucuya taşınabilir ve oraya eklenebilir.

Permissions

Sistem yöneticisi sabit sunucu rolünde üyelik veya veritabanının db_owner rolünde üyelik gerektirir.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

Aşağıdaki örnek, AdventureWorks2025 olarak ayarlamışken ayırırtrue.

EXECUTE sp_detach_db 'AdventureWorks2022', 'true';

Aşağıdaki örnek, veritabanını AdventureWorks2025 ayırır ve tam metin indeks dosyalarını ile meta verilerini korur. Bu komut, varsayılan davranış olan UPDATE İSTATÎSTÎKLERİNİ çalıştırır.

EXECUTE sp_detach_db
    @dbname = 'AdventureWorks2022',
    @keepfulltextindexfile = 'true';