2010-11-19 21 views
13

Veritabanını yeniden adlandırmam gerekiyor, ancak diğer işlemler bunu kullandığından beri yapamıyorum. Bu süreci umursamıyorum ve onu öldürmem gerek.sql server 2008 Herkes db'mden nasıl ayrılır?

Db'deki tüm bağlantıları nasıl silerim?

+0

seni tüm önerdi yapmaya çalıştım ama DB alıyorum alr3ady açıktır: Aşağıdaki işler bu uç ...

ALTER DATABASE AdventureWorks SET single_user WITH ROLLBACK IMMEDIATE ALTER DATABASE AdventureWorks MODIFY NAME = NewAdventureWorks ALTER DATABASE NewAdventureWorks SET multi_user 

+1

Başka bir bağlantı kullanacak olan Nesne Gezgini'ni kullanarak deneme ve yeniden adlandırmayın. TSQL kullanmanız gerekiyor. –

cevap

23

benim yorumum gereğince bir kez modu single_user yılında aynı bağlantıdan yeniden adlandırma yapmak gerekir. Yeni bir bağlantı açmaya çalışacağından, bunu Object Explorer aracılığıyla yeniden denemeyin.

ALTER DATABASE [old_name] 
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
ALTER DATABASE [old_name] 
    MODIFY NAME = [new_name] 
GO 
ALTER DATABASE [new_name] 
    SET MULTI_USER 
GO 
+0

Bunun sadece MS SQL 2005 ve üstü için çalıştığı bir not. Daha önceki sürümde çalışanlar için 'EXEC sp_dboption 'DB name', 'single user', 'TRUE'' kullanmanız gerekir. – Nux

2

sp_who komutunu çalıştırın, ardından veritabanınızdaki herkes için [pid] öğesini kesin. Bunun gibi

+5

Bu can sıkıcı, hantal ve bunu yaparken 500'e daha fazla spids sunucunuza bağlanabilir. Hiç bir yamaca oynayacak mısın? Veritabanını SINGLE_USER olarak ayarlayın - bu tek bir komuttur ve gelen yeni bağlantıları engeller. –

0

Bu

beni veritabanı ve kuvvet ayırma herkesi adlandırmak için iyi çalıştı ve sadece bir kullanıcı atime sahip olabilir