sp_detach_db (Transact-sql)

Şu anda sunucu örneği kullanmak değildir ve isteğe bağlı olarak, güncelleştirme istatistikleri ayırma önce tüm tabloları üzerinde çalışan bir veritabanını ayırır.

Önemli notÖnemli

Ayrılmış bir çoğaltılmış veritabanı için yayımlanmamış olmalıdır. Daha fazla bilgi için "Uyarılar" konusuna bakın. Bu konuda daha sonra açıklanan bölümü.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

sp_detach_db [ @dbname= ] 'database_name' 
    [ , [ @skipchecks= ] 'skipchecks' ] 
    [ , [ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' ] 

Bağımsız değişkenler

  • @dbname ='database_name'
    Ayrılmış veritabanı adıdır. database_nameolan bir sysnamedeğeri, varsayılan değeri NULL.

  • @ Atla ='skipchecks'
    Atlamak veya güncelleştirme istatistikleri çalıştırmak belirtir. skipchecksolan bir nvarchar(10)değeri, varsayılan değeri NULL. update STATISTICS atlamak için belirtmek true. Açıkça güncelleştirme istatistikleri çalıştırmak için belirtmek false.

    Varsayılan olarak, güncelleştirme istatistikleri tablolardaki verileri hakkındaki bilgileri güncelleştirmek için gerçekleştirilir ve dizinler içinde SQL Server 2005 Veritabanı Altyapısıve sonraki sürümleri. update STATISTICS gerçekleştirmek için salt okunur medya taşınacak olan veritabanları için yararlıdır.

  • @ keepfulltextindexfile='KeepFulltextIndexFile'
    Müstakil veritabanı ile ilişkili tam metin dizini dosyası veritabanı sırasında düştü değil belirtir işlem ayırabilirsiniz. KeepFulltextIndexFileolan bir nvarchar(10)varsayılan değeri true. Eğer KeepFulltextIndexFileolan false, veritabanı ile ilişkili tüm tam metin dizini dosyaları ve tam metin dizini meta verileri bırakılır, veritabanı salt okunur olmadıkça. Eğer null veya true, tam metin ile ilgili meta veriler tutulur.

    Önemli notÖnemli

    @ Keepfulltextindexfile parametresi bir gelecek sürümünde kaldırılacak SQL Server. Değil yeni geliştirme çalışmalarında bu parametreyi kullanın ve şu anda bu parametre sürede kullanan uygulamalar değiştirin.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (hata)

Sonuç Kümeleri

Hiçbiri

Açıklamalar

Bir veritabanı ilişkisi kesildi olduğunda, tüm metaverileri bırakılır. Eğer herhangi bir oturum açma hesabı, varsayılan veritabanı veritabanı oldu ana kendi varsayılan veritabanı olur.

[!NOT]

Tüm oturum açma hesapları varsayılan veritabanı görüntüleme hakkında daha fazla bilgi için bkz: sp_helplogins (Transact-sql). Gerekli izinleriniz varsa, sen-ebilmek kullanma alter LOGIN bir mantık-e doğru yeni bir varsayılan veritabanı atamak.

Kısıtlamalar

Aşağıdakilerden herhangi biri doğruysa, bir veritabanı ilişkisi kesildi olamaz:

  • Veritabanı şu anda kullanımda. Daha fazla bilgi için bkz: "Özel erişim elde etme" Bu konudaki.

  • Veritabanı çoğaltılmış varsa yayımlanır.

    Veritabanını ayırmadan önce çalıştırarak yayımlamayı devre gerekir sp_replicationdboption.

    [!NOT]

    Eğer sen cant'kullanma sp_replicationdboption, sen-ebilmek çıkarmak çoğaltma çalıştırarak sp_removedbreplication.

  • Veritabanı üzerinde veritabanı anlık bulunmaktadır.

    Veritabanını ayırmadan önce tüm onun anlık düşmesi gerekir. Daha fazla bilgi için, bkz. Veritabanı Snapshot (Transact-sql) bırak.

    [!NOT]

    Veritabanı anlık müstakil veya bağlı.

  • Veritabanı yansıtılır.

    Veritabanı oturumu yansıtma sonlandırılana kadar veritabanı ilişkisi kesildi olamaz. Daha fazla bilgi için, bkz. Veritabanı (SQL Server) yansıtma kaldırma.

  • Şüpheli veritabanıdır.

    De SQL Server 2005ve sonraki sürümler gerekir sizi şüpheli veritabanı Acil moduna veritabanını ayırmadan önce. Acil moduna veritabanı hakkında daha fazla bilgi için bkz: alter veritabanı (Transact-sql).

  • Sistem veritabanı veritabanıdır.

Özel erişim elde etme

Bir veritabanı ayırma veritabanına özel kullanım erişimi gerektirir. O ayırmadan önce ayırmak istediğiniz veritabanını, kullanılıyorsa, veritabanı SINGLE_USER moduna özel erişim edinmek için ayarlayın.

Örneğin, aşağıdaki ALTER DATABASEdeyimi alır için ayrıcalıklı erişim AdventureWorks2012tüm geçerli kullanıcıların veritabanı bağlantısını kestikten sonra veritabanı.

USE master;
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER;
GO

USE master;
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER;
GO

[!NOT]

Geçerli zorlamak için kullanıcıların veritabanından hemen ya da belirli sayıda saniye içinde de geri alma seçeneğini kullanın: alter database database_nameset SINGLE_USER ile geri rollback_option. Daha fazla bilgi için, bkz. alter veritabanı (Transact-sql).

Bir veritabanı reattaching

Müstakil dosyaları kalır ve veritabanı oluşturma (eklemek için veya for ATTACH_REBUILD_LOG seçeneği ile) kullanarak reattached. Dosyalar başka bir sunucuya taşındı ve orada bağlı.

İzinler

Üyelik db_owner veritabanı rolü.

Örnekler

Aşağıdaki örnek ucun AdventureWorks2012veritabanı ile skipcheckstrue olarak.

EXEC sp_detach_db 'AdventureWorks2012', 'true';

EXEC sp_detach_db 'AdventureWorks2012', 'true';

Aşağıdaki örnek ucun AdventureWorks2012veritabanı ve tam metin dizin dosyaları ve tam metin dizini meta verileri tutar. Bu komut, varsayılan davranış olduğu update STATISTICS çalışır.

exec sp_detach_db @dbname='AdventureWorks2012'
    , @keepfulltextindexfile='true';

exec sp_detach_db @dbname='AdventureWorks2012'
    , @keepfulltextindexfile='true';

Ayrıca bkz.

Başvuru

alter veritabanı (Transact-sql)

Veritabanı (Transact-sql) oluştur

Kavramlar

Veritabanı bağlantısını kesin ve (SQL Server) iliştirme

Bir veritabanının bağlantısını kesin