private void ExecuteScript(ScriptAccessor scriptAccessor) { using (var connection = Configuration.GetConnection()) { connection.InfoMessage += InfoMessage; using (var txn = connection.BeginTransaction()) { try { var script = scriptAccessor.Read(); var commands = Regex.Split(script, @"(?m)^\s*GO\s*\d*\s*$", RegexOptions.IgnoreCase); foreach (var c in commands.Where(q => !string.IsNullOrEmpty(q))) { new SqlCommand(c, connection, txn).ExecuteNonQuery(); } txn.Commit(); } catch { txn.Rollback(); throw; } finally { connection.InfoMessage -= InfoMessage; } } } }
private string ExecuteScriptOnMaster(ScriptAccessor scriptAccessor) { var output = _runner.Run( _сonnectionStringBuilder.DataSource, _сonnectionStringBuilder.UserID, _сonnectionStringBuilder.Password, scriptAccessor.GetFullPath()); return(output); }
protected void RaiseOnScriptSuccess(ScriptAccessor script) { var evt = this.OnScriptExecuted; if (evt != null) { evt(new ScriptRunResult { Script = script }); } }
private bool ContentHasChanged( SqlConnection connection, ScriptsRunInfo recordedScript, string foundScript) { var found = new ScriptAccessor(foundScript); var foundInfo = new ScriptsRunInfo { ScriptText = found.Read() }; return(foundInfo.ScriptHash != recordedScript.ScriptHash); }
protected void RaiseOnScriptFailure(ScriptAccessor script, Exception exception) { var evt = OnScriptExecuted; if (evt != null) { var result = new ScriptRunResult { Script = script }; result.RecordError(exception.Message); evt(result); } }
public void Apply(string statement) { var file = Path.GetTempFileName(); File.WriteAllText(file, statement); var scriptAccessor = new ScriptAccessor(file); try { this.Apply(new Step { Scripts = new[] { scriptAccessor } }); RaiseOnScriptSuccess(scriptAccessor); } catch (Exception scriptApplicationException) { RaiseOnScriptFailure(scriptAccessor, scriptApplicationException); } finally { File.Delete(file); } }
internal Script(string script, UUID scriptID, uint localID, IConfigSource config, Scene scene, PolicyLevel policy, ScriptAccessor scriptAccessor, bool error2Console) { m_hostSOP = scene.GetSceneObjectPart(localID); m_asset = m_hostSOP.Inventory.GetInventoryItem(scriptID); m_god = scene.UserAccountService.GetUserAccount(UUID.Zero, m_hostSOP.OwnerID); m_name = (m_god.Name + "." + m_hostSOP.Name + "." + m_asset.Name).Replace(" ", ""); m_name = scriptAccessor.AddScript(this); m_scene = scene; m_config = config; m_policy = policy; m_error2Console = config.Configs["MRM"].GetBoolean("ErrorToConsole", true); m_scriptAccessor = scriptAccessor; m_errors = new ArrayList(); SEUser securityUser = new SEUser(m_god.PrincipalID, m_god.Name, this); m_creds = new SecurityCredential(securityUser, m_scene); ScriptText = script; }
internal ScriptMRM(string script, UUID id, uint localID, IConfigSource config, Scene scene, PolicyLevel policy, ScriptAccessor scriptAccessor, bool error2Console, bool sandboxed) : base(script, id, localID, config, scene, policy, scriptAccessor, error2Console) { m_setup = config.Configs["MRM"].GetBoolean("Sandboxed", true) ? new AppDomainSetup() : null; }
internal ScriptXMRM(string script, UUID id, uint localID, IConfigSource config, Scene scene, PolicyLevel policy, ScriptAccessor scriptAccessor, bool error2Console) : base(script, id, localID, config, scene, policy, scriptAccessor, error2Console) { }