public Boolean RestoreDatabase(String databaseName, String filePath, String serverName, String userName, String password, String dataFilePath, String logFilePath)
        {
            Boolean Co         = true;
            Restore sqlRestore = new Restore();

            //sqlRestore.NoRecovery = true;
            sqlRestore.SetPassword("BMBez2010");
            //sqlRestore.SetMediaPassword("123456");
            BackupDeviceItem deviceItem = new BackupDeviceItem(filePath, DeviceType.File);

            sqlRestore.Devices.Add(deviceItem);
            sqlRestore.NoRecovery      = false;
            sqlRestore.ReplaceDatabase = true;
            sqlRestore.Database        = databaseName;

            ServerConnection connection;

            // for Windows Authentication
            if (userName == "")
            {
                SqlConnection sqlCon = new SqlConnection(@"Data Source=" + serverName + @"; Integrated Security=True;");
                connection = new ServerConnection(sqlCon);
            }
            // for Server Authentication
            else
            {
                connection = new ServerConnection(serverName, userName, password);
            }

            Server sqlServer = new Server(connection);

            Database db = sqlServer.Databases[databaseName];

            sqlServer.KillAllProcesses(databaseName);

            sqlRestore.Action = RestoreActionType.Database;
            String dataFileLocation = dataFilePath + databaseName + ".mdf";
            String logFileLocation  = logFilePath + databaseName + "_Log.ldf";

            db = sqlServer.Databases[databaseName];
            RelocateFile rf = new RelocateFile(databaseName, dataFileLocation);

            sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName, dataFileLocation));
            sqlRestore.RelocateFiles.Add(new RelocateFile(databaseName + "_log", logFileLocation));
            sqlRestore.ReplaceDatabase             = true;
            sqlRestore.Complete                   += new ServerMessageEventHandler(sqlRestore_Complete);
            sqlRestore.PercentCompleteNotification = 10;
            sqlRestore.PercentComplete            += new PercentCompleteEventHandler(sqlRestore_PercentComplete);

            try
            {
                sqlRestore.SqlRestore(sqlServer);
            }
            catch (Exception ex)
            {
                // MessageBox.Show(ex.InnerException.ToString());
                Co = false;
            }
            //db = sqlServer.Databases[databaseName];
            //db.SetOnline();
            sqlServer.Databases[databaseName].SetOnline();
            sqlServer.Refresh();
            return(Co);
        }