MS Sql 2008'i çevrimdışı veya çevrimiçi almak istersek, GUI -> DB-Tasks-Take Online'ı veya Çevrimdışı Al'ı kullanmam gerekir.SQL Script?
Bu, bazı sql betikleri ile yapılabilir mi?
MS Sql 2008'i çevrimdışı veya çevrimiçi almak istersek, GUI -> DB-Tasks-Take Online'ı veya Çevrimdışı Al'ı kullanmam gerekir.SQL Script?
Bu, bazı sql betikleri ile yapılabilir mi?
ALTER DATABASE database-name SET OFFLINE
Kullanıcıların veya süreçleri bağlanır iken ALTER DATABASE komutunu çalıştırırsanız, ama sen NO_WAIT seçeneğiyle deyimi yürütebileceği, komut engellenecek istemiyoruz. Bu, komutun bir hatayla başarısız olmasına neden olur.
ALTER DATABASE database-name SET OFFLINE WITH NO_WAIT
Sorumlu çevrimiçi:
ALTER DATABASE database-name SET ONLINE
Burada sadece sizin için çok yararlı olabilecek bir not var: Bu GUI perde arkasında TSQLwise ne yaptığını görmek için hemen hemen her zaman mümkündür.
-- Take all user databases offline
CREATE PROCEDURE SP_TakeOfflineAllDatabase AS
BEGIN
DECLARE @db sysname, @q varchar(max);
DECLARE cur_db CURSOR FOR
SELECT name FROM sys.databases WHERE owner_sid<>0x01;
OPEN cur_db;
WHILE 1=1
BEGIN
FETCH NEXT FROM cur_db INTO @db;
IF @@FETCH_STATUS <> 0
BREAK;
SET @q = N'ALTER DATABASE [' + @db + N'] SET OFFLINE WITH NO_WAIT';
EXEC(@q);
END;
CLOSE cur_db;
DEALLOCATE cur_db;
END;
başlatma sunucusu önce yordamı çalıştırılır. Veritabanlarına var olan bağlantıları kapatacaktır.
Bunun eski bir yazı olduğunu biliyorum, ancak birisinin bu çözümle karşılaşması durumunda ve çalıştırılmayan ancak komut dosyalarını döndüren bir imleç yöntemini tercih etmemesi. Daha önceki çözümü aldım ve sonuçları temel alan bir seçime dönüştürdüm.
DECLARE @SQL VARCHAR(8000)
SELECT @SQL=COALESCE(@SQL,'')+'ALTER DATABASE '+name+ N' SET OFFLINE WITH NO_WAIT;
'
FROM sys.databases
WHERE owner_sid<>0x01
PRINT @SQL
Nod Peter - ı her zaman (komut dosyalarını kapmak için) ... Bunun iyi bir örnektir i tablo yapısı/şema değiştirmek istediğinizde, şu tuşu kullanarak ve (varsayılan fazla 30 saniye sürer zaman aşımı hatası oluşmadan önce bekleme süresi). Bu yüzden değişim betiğini almam ve el ile çalıştırmam gerekiyor. –