Aşağıdaki scriptle tüm user databaselerini yedek alıp, kopyalacağınız sunucuda istediğiniz dizine restore etmek için script oluşturabilirsiniz. Kaynak sunucuda backup scripti, hedef sunucuda restore scripti çalıştırılmalı, eğer aynı sunucu üzerinde backup restore yapıyorsanız her iki outputda aynı sunucuda çalıştırılır. Prod ortamdan alınan backupları test ortamına restore etmek için işinize yarayabilir.
Backupların alınacağı pathi, restore için datafile pathini ve log filelar için dosya pathini değiştirin.
DECLARE @date CHAR(8) SET @date = (SELECT CONVERT(char(8), GETDATE(), 112)) DECLARE @backup_path VARCHAR(125),@data_restore_path VARCHAR(250),@log_restore_path VARCHAR(250) SET @backup_path = 'D:\SQLBackup\' ---- Source ve Target sunucuda backupların alınacağı ve kopyalanacağı dizin SET @data_restore_path = 'D:\SQLData\' ---- Target sunucuda data dosyalarının restore olacağı dizin SET @log_restore_path = 'E:\SQLLog\' ---- Target sunucuda log dosyalarının restore olacağı dizin. ;WITH MoveCmdCTE ( DatabaseName, MoveCmd ) AS ( SELECT DISTINCT DB_NAME(database_id) , STUFF((SELECT ' ' + CHAR(13)+', MOVE ''' + name + '''' + CASE Type WHEN 0 THEN ' TO ''' + @data_restore_path +'' ELSE ' TO ''' + @log_restore_path + '' END + REVERSE(LEFT(REVERSE(physical_name), CHARINDEX('\', REVERSE(physical_name), 1) - 1)) + '''' FROM sys.master_files sm1 WHERE sm1.database_id = sm2.database_ID and sm2.database_id >4 FOR XML PATH('') , TYPE).value('.', 'varchar(max)'), 1, 1, '') AS MoveCmd FROM sys.master_files sm2 where sm2.database_id > 4 ) SELECT 'BACKUP DATABASE ' + name + ' TO DISK = ''' + @backup_path + '' + name + '_' + @date + '.bak'' WITH COMPRESSION, STATS=5' as script_backup_all_databases, 'RESTORE DATABASE '+ name + ' FROM DISK = ''' + @backup_path + '' + name + '_' + @date + '.bak'' WITH RECOVERY, REPLACE, STATS=5 ' + movecmdCTE.MoveCmd as script_restore_all_databases FROM sys.databases d INNER JOIN MoveCMDCTE ON d.name = movecmdcte.databasename WHERE d.name LIKE '%' ----- Sadece belirli databaseler için yapılacaksa buraya belirtin.. GO