Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #region Includes
- using System;
- using System.Text;
- using Microsoft.SqlServer.Management.Smo;
- using Microsoft.SqlServer.Management.Common;
- #endregion
- namespace database_restorer
- {
- class Program
- {
- static Server srvSql;
- static void Main(string[] args)
- {
- try
- {
- Log.Start();
- var ini = new IniReader("config.ini");
- var srvConn = new ServerConnection();
- srvConn.LoginSecure = false;
- srvConn.ServerInstance = ini.ReadString("database_restorer", "server","(local)\\SQLEXPRESS");
- srvConn.Login = ini.ReadString("database_restorer", "user", "sa");
- srvConn.Password = ini.ReadString("database_restorer", "pass");
- srvSql = new Server(srvConn);
- if (srvSql != null)
- {
- Log.Notice("Creating databases...");
- var databases = ini.ReadString("database_restorer", "databases");
- var spl = databases.Split(new char[] { ';' });
- if (spl.Length > 0)
- {
- foreach (var name in spl)
- {
- try
- {
- Log.Warning("Creating {0}...", name);
- var db = new Database(srvSql, name);
- db.Create();
- Log.Notice("*** {0} database created. ***", name);
- }
- catch { Log.Notice("{0} skipped.", name); continue; }
- }
- Log.Notice("Restoring backups...");
- var bkp_dir = ini.ReadString("database_restorer", "dir_bkp");
- foreach (var name in spl)
- {
- Log.Warning("Restoring {0}...", name);
- var restore = new Restore();
- var bkp_name = name + ".bak";
- var path = bkp_dir + bkp_name;
- var bkp_folder = ini.ReadString("database_restorer", "sql_databases");
- var dataFile = bkp_folder + name + ".mdf";
- var logFile = bkp_folder + name + "_Log.ldf";
- var device = new BackupDeviceItem(path, DeviceType.File);
- restore.PercentComplete += new PercentCompleteEventHandler(restore_PercentComplete);
- restore.Action = RestoreActionType.Database;
- restore.Database = name;
- restore.Devices.Add(device);
- restore.NoRecovery = false;
- restore.ReplaceDatabase = true;
- var logicalRestoreFiles = restore.ReadFileList(srvSql);
- restore.RelocateFiles.Add(new RelocateFile(logicalRestoreFiles.Rows[0][0].ToString(), dataFile));
- restore.RelocateFiles.Add(new RelocateFile(logicalRestoreFiles.Rows[1][0].ToString(), logFile));
- try { restore.SqlRestore(srvSql); }
- catch(Exception ex) {
- Log.Notice("Error restoring {0}.", name);
- Log.Error(ex.InnerException.ToString());
- continue; }
- }
- Log.Notice("Done! Press enter to exit...");
- Console.ReadLine();
- Environment.Exit(1);
- }
- else
- {
- Log.Notice("There is not any databases to create! Aborting...");
- Console.Read();
- Environment.Exit(1);
- }
- }
- else
- {
- Log.Notice("Failed to connect to the database!");
- Console.Read();
- Environment.Exit(1);
- }
- }
- catch(Exception ex)
- {
- Log.Notice(ex.InnerException.ToString());
- Console.ReadLine();
- }
- }
- static void restore_PercentComplete(object sender, PercentCompleteEventArgs e)
- {
- Console.Write(String.Format("\r{0}% Complete...",e.Percent));
- if (e.Percent == 100)
- Console.Write("\n");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement