2014-05-19 19 views

cevap

7

İlk çalıştırmadan önce çevrimdışı olarak alın. Bunun için diyalog bir kuvvet seçeneği sağlar. Sonra güvenli bir şekilde ayırabilirsiniz. Kişisel Veri Tabanına

+1

Veritabanınızı tek bir kullanıcı modunda alarak bağlantısını kesmediğiniz sürece, veritabanına bağlı kişiler varsa, bunu çevrimdışı olarak alamıyorsunuz. –

+1

[Savin 'ya bir google] (http://blog.sqlauthority.com/2010/04/24/sql-server-t-sql-script-to-take-database-offline-take-database-online/) : "ALTER DATABASE [myDB] ROLLBACK IMMEDIATE" ve "ALTER DATABASE [OFFBASE] İLE OFFLINE" [ONDB] SET ONLINE ' – ruffin

+0

Çevrimdışı veritabanı almak için iletişim non-interaktif. İlk önce size sormadan bunu dener ve iptal çalışmaz. Başarısız hale gelmesi uzun zaman alabilir. Bunun yerine, veritabanını çıkarırsanız, geçerli oturumları bırakma seçeneği vardır. –

9

ayırın Tüm Diğer Kullanıcılar Eğer bir veritabanına bağlı tek kullanıcı ve tüm bağlantısını kesmek istiyorsanız

ALTER DATABASE [YourDbName] 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 

Veritabanı

için ssms Bağlantıları ayırın SSMS'de sizin tarafınızdan yapılmış olan, SSMS'de açık olan herhangi bir Query windows'dan herhangi birini seçip Sağ Tıkla ve aşağıya bakın:

enter image description here

1

El ile (ve bu nedenle, programsal olarak biraz çaba ile) veritabanına açık bağlantıları kapatmak için KILL komutunu kullanabilirsiniz.

Kapatılacak olan bağlantı noktalarını belirledikten sonra, artık bu zor kısım. Hangi veritabanlarını hangi bağlantıların kullandığını el ile tanımlamak için sistem yordamları SP_WHO ve SP_WHO2 ile başlayın; Bu prosedürlerin kullanımı ve analizi, sistem nesnelerini sys.processes, sys.dm_exec_sessions ve diğerlerinin birçoğuna atıfta bulunarak SPID'lerin nihai olarak anlaşılması ve bağlantı havuzlarının kaçınılmaz saygılı bir şekilde okunmasıyla sonuçlanabilir.

Bunların tümü SQL Books Online'da ayrıntılı olarak ele alınmıştır. Oldukça geniş bir labirentin başlangıcı ve bu hedefe ne kadar ulaştığınız, nihai hedeflerinize ve hedeflerinize bağlıdır.

+0

Bu yöntem gerçek bir acı olabilir, Sadece birkaç ay önce bir veritabanını çevrimdışı duruma getirmeye çalışıyordum ancak uygulama veritabanına yeni bağlantılar açmaya devam ediyordu. Süreç uygulamasını kaç kez öldürdüğüm önemli değil, yeni bir tane açtı. Finnaly Tek bir kullanıcı modunu kullanarak uygulamanın yeni bağlantı açmasını durdurmak için tek bağlantıyı kullandım. –

+0

Bana bunu anlat. Dönen ve belirtilen bir veritabanı için tüm açık bağlantıları öldürmeyi deneyen bir rutine sahibim; bundan sonra hepsi kapatılmışsa, bir komut dosyası (genellikle sp_detachdb) çalıştırır. 10 geçişten sonra tüm bağlantıları kapatamazsa pes etti. Sadece DBA kullanımı, elbette! –

İlgili konular