SQL Server’da Veritabanlarının Hepsini Tek Seferde Detach Etmek
Herkese merhaba,
Bu yazıda SQL Server’da veritabanlarının hepsini tek seferde detach etmek hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda veritabanlarını tek tek detach etmek yerine tek seferde detach etme ihtiyacınız olabilir.
Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz. Benzer Türkçe yazılmış bir kod örneği yoktur. Alanında tektir.
DECLARE @VeriTabaniAdi VARCHAR(255); DECLARE @SqlCumle NVARCHAR(500); DECLARE DBCURSOR CURSOR FOR SELECT name FROM sys.databases WHERE database_id > 4 AND name NOT LIKE 'Report%'; OPEN DBCURSOR; FETCH NEXT FROM DBCURSOR INTO @VeriTabaniAdi; WHILE @@FETCH_STATUS = 0 BEGIN SET @SqlCumle = N'EXEC sp_detach_db ' + @VeriTabaniAdi + +CHAR(13) + CHAR(10); SET @SqlCumle = @SqlCumle + CHAR(13) + CHAR(10); EXEC sp_executesql @SqlCumle; PRINT @VeriTabaniAdi + N' başarıyla detach edildi'; FETCH NEXT FROM DBCURSOR INTO @VeriTabaniAdi; END; CLOSE DBCURSOR; DEALLOCATE DBCURSOR;
Kodu çalıştırdığınızda bu veritabanının aktif bir bağlantısı var gibisinden hatalar alabilirsiniz. Çözmenin yolu, manuel olarak veritabanını aşağıdaki gibi kaldırmaktır.
Task -> Detach seçilir.
Bağlantı tiki işaretlenir ve OK butonuna basılır.
Tekrar kodumuza dönecek olursak. Eğer bu tarz bir hata almadıysanız yukarıdaki kodu çalıştırdığınızda aşağıdaki gibi bir sonuç göreceksiniz.
Görüldüğü üzere iki veritabanımız detach edilmiş oldu. SQL Server Management Studio ekranından veritabanlarının detach edildiğini göreceksiniz.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.