//internal bool IsCheckedOut() //{ // return !((File.Attributes & System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly); //} void ExecuteProcs(string[] scripts) { SqlTransaction trans = null; string commandText = null; SqlConnection conn = new SqlConnection(Global.ConnectionString + ";Connection Timeout=0"); try { conn.Open(); trans = conn.BeginTransaction(); for (int i=0;i<scripts.Count();i++) { commandText = scripts[i]; if (commandText.Trim() != "") { try { SqlCommand cmd = new SqlCommand(commandText, conn, trans); cmd.CommandTimeout = 0; cmd.ExecuteNonQuery(); } catch (SqlException ex) { if (ex.Message.Contains("@WorkingDirectory")) { string workingDirectoryDef = "DECLARE @WorkingDirectory VARCHAR(MAX) SET @WorkingDirectory = '" + Directory.GetCurrentDirectory() + "' \r\n"; var cmd2 = new SqlCommand(workingDirectoryDef + commandText, conn, trans); cmd2.CommandTimeout = 0; cmd2.ExecuteNonQuery(); } else { throw ex; } } } } trans.Commit(); } catch (System.Data.SqlClient.SqlException ex) { trans.Rollback(); ScriptExecutionException scriptEx = new ScriptExecutionException(this, ex); ArrayList missingObjectNames = MissingObjectExceptionMessage.GetMissingObjectNames(ex.Message); if (missingObjectNames.Count == 0) { LogTable.Write(this, Time.Now, "Failure: " + ex.ToString()); throw scriptEx; } else { DependencyException depEx = new DependencyException(scriptEx); foreach (string missingObjectName in missingObjectNames) { depEx.addDependency(missingObjectName); } throw depEx; } } finally { conn.Close(); } LogTable.Write(this, Time.Now, "Success"); }
private static void PrintUnhandledScriptException(bool verbose, ScriptExecutionException e) { Console.WriteLine("Terminating due to unhandled exception in the script file:"); PrintException(verbose, e); }