Ana Sayfa > SQL ServerSystemT-SQL > Tek Sorgu ile tüm Veritabanlarının Yedeğini almak

Tek Sorgu ile tüm Veritabanlarının Yedeğini almak

 Sql Server Sunucusunda tanımlı yedek dizinine, tek sorgu ile tüm veritabanlarının
yedeğini almak isterseniz, bu işlemi aşağıdaki sorgu ile yapabilirsiniz.. 

  

DECLARE @dbisim VARCHAR(50) 
DECLARE @dosyaismi VARCHAR(256) 
DECLARE @yedekyolu VARCHAR(256) 
DECLARE @yedektarihi VARCHAR(20) 

DECLARE @value_name varchar(255)
EXEC master..xp_regread
'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer', --Bu satır SQL versiyonuna göre değişir.
'BackupDirectory',
@yedekyolu OUTPUT
print 'Yedek Dizini : '+ @yedekyolu

SELECT @yedektarihi = CONVERT(VARCHAR(20),GETDATE(),112)

DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @dbisim

WHILE @@FETCH_STATUS = 0
BEGIN
SET @dosyaismi = @yedekyolu+ '\' + @dbisim + '_' + @yedektarihi + '.BAK';
print @yedekyolu+ '\' + @dbisim
BACKUP DATABASE @dbisim TO DISK = @dosyaismi

FETCH NEXT FROM db_cursor INTO @dbisim
END

CLOSE db_cursor
DEALLOCATE db_cursor

Yukarıdaki sorguyu .sql uzantılı bir dosyaya;
Aşağdaki satırı ise bat dosyasına kaydedip schedule edebilirsiniz.

sqlcmd -S server_name -i "c:\script_file_name.sql"

(-s sunucu; -i inputfile parametreleridir. )

Benzer yazılar

“Tek Sorgu ile tüm Veritabanlarının Yedeğini almak” için 2 Yorum yazıldı

  1. kad1r diyor ki:

    Komple sql’lerin yedeğini almak için nasıl birşey yapabilirim.
    SQL Server altında atıyorum 100 db varsa. Hepsi için ayrı ayrı yazmak yerine for veya farklı bir loop ile tek seferde yedek almak mümkün mü acaba?

  2. Orhan AKDOĞAN diyor ki:

    Kadir bey bu sorgu zaten tam olarak söylemiş olduğunuz şeyi yapıyor,
    while ile donguye giriliyor dikkat ederseniz..

Yorum Yaz