/[AnywhereTS-MSSQL]/trunk/TSAdminTool/Database.cs
ViewVC logotype

Diff of /trunk/TSAdminTool/Database.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 21 by william, Wed Jul 11 19:34:51 2012 UTC revision 45 by william, Thu Jul 12 13:01:44 2012 UTC
# Line 6  using System.Data.SqlClient; Line 6  using System.Data.SqlClient;
6  using System.Windows.Forms;  using System.Windows.Forms;
7  using System.Text.RegularExpressions;  using System.Text.RegularExpressions;
8  using System.Management;  using System.Management;
9    using log4net;
10    
11  namespace AnywhereTS  namespace AnywhereTS
12  {  {
13      class DatabaseSupport      class DatabaseSupport
14      {      {
15            
16          enum VersionCheck          enum VersionCheck
17          {          {
18              Failed = 0,              Failed = 0,
# Line 25  namespace AnywhereTS Line 27  namespace AnywhereTS
27          private SqlCommand sqlCmd = new SqlCommand();          private SqlCommand sqlCmd = new SqlCommand();
28    
29          const string SQL_BROWSER_SERVICE_NAME = "SQLBrowser";          const string SQL_BROWSER_SERVICE_NAME = "SQLBrowser";
   
30          public static string InstanceName          public static string InstanceName
31          {          {
32              get              get
# Line 47  namespace AnywhereTS Line 48  namespace AnywhereTS
48          {          {
49              bool bContinue = false;              bool bContinue = false;
50              // Create a connection to SQL Server              // Create a connection to SQL Server
51                
52                Logging.ATSAdminLog.Debug("SetupDatabase() called ");
53              try              try
54              {              {                
55                  sqlCon.ConnectionString = Properties.Settings.Default.atsConnectionString;                  sqlCon.ConnectionString = Properties.Settings.Default.atsConnectionString;                
56                  sqlCon.Open();                  using (log4net.NDC.Push(string.Format("ConnectionString={0}", Properties.Settings.Default.atsConnectionString)))
57                    {
58                        Logging.ATSAdminLog.Debug("Opening connection to AnywhereTS Database");
59                    }
60                    if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
61              }              }
62              catch              catch
63              {              {
# Line 59  namespace AnywhereTS Line 66  namespace AnywhereTS
66                  //bCreateDB = true;                  //bCreateDB = true;
67                  try                  try
68                  {                  {
69                      try                      using (log4net.NDC.Push(string.Format("SQL Statment={0}", Resource1.CreateDatabase.ToString())))
70                      {                      {
71                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString);                          Logging.ATSAdminLog.Debug("Creating Database AnywhereTS");
72                          sqlCon.Open();                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));
73                          RunScript("DROP AnywhereTS");                          if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
74                            RunScript(Resource1.CreateDatabase.ToString());
75                          sqlCon.Close();                          sqlCon.Close();
76                      }                      }
77                      catch { }                      Logging.ATSAdminLog.Debug("Created Database AnywhereTS");
78    
79                      sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));                      using (log4net.NDC.Push(string.Format("SQL Statment={0}", Resource1.CreateTables.ToString())))
80                      sqlCon.Open();                      {
81                      RunScript(Resource1.CreateDatabase.ToString());                          Logging.ATSAdminLog.Debug("Creating Tables in AnywhereTS Database");
82                      sqlCon.Close();                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));
83                      sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString);                          if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
84                      sqlCon.Open();                          RunScript(Resource1.CreateTables.ToString());
85                            //sqlCon.Close();
86                        }
87                        Logging.ATSAdminLog.Debug("Created Tables in AnywhereTS Database");
88                  }                  }
89                  catch (SqlException sql_ex1)                  catch (SqlException sql_ex1)
90                  {                  {
91                      SqlException sql_ex = (sql_ex1.GetBaseException() as SqlException);                      SqlException sql_ex = (sql_ex1.GetBaseException() as SqlException);
92                      MessageBox.Show(string.Format("Failed to connect to SQL Server Instance: {0}\n", InstanceName) + sql_ex.Number.ToString() + " " + sql_ex.Message.ToString());                      MessageBox.Show(string.Format("Failed to connect to SQL Server Instance: {0}\n", InstanceName) + sql_ex.Number.ToString() + " " + sql_ex.Message.ToString());
93    
94                        using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", sql_ex.Number.ToString(), sql_ex.Message, System.Environment.NewLine, sql_ex.ToString())))
95                        {
96                            Logging.ATSAdminLog.Error("Failed to open connection to AnywhereTS Database");
97                        }
98                      return bContinue;                      return bContinue;
99                  }                  }
100              }              }
# Line 87  namespace AnywhereTS Line 103  namespace AnywhereTS
103              Version databaseVersion; // The current version of the database              Version databaseVersion; // The current version of the database
104              int chkVer = CheckVersion(out databaseVersion);              int chkVer = CheckVersion(out databaseVersion);
105              VersionCheck verChk = (VersionCheck)chkVer;              VersionCheck verChk = (VersionCheck)chkVer;
106              MessageBox.Show(string.Format("Version Check: {0} Version: {1}", verChk.ToString(), databaseVersion.ToString()));              //MessageBox.Show(string.Format("Version Check: {0} Version: {1}", verChk.ToString(), databaseVersion.ToString()));
107                Logging.ATSAdminLog.DebugFormat("Version Check: {0} Version: {1}", verChk.ToString(), databaseVersion.ToString());
108              switch (chkVer)              switch (chkVer)
109              {              {
110                  case (int)VersionCheck.Equal:                  case (int)VersionCheck.Equal:
# Line 107  namespace AnywhereTS Line 124  namespace AnywhereTS
124                              // Run the apropriate upgdrade script(s)                              // Run the apropriate upgdrade script(s)
125                              case "1.0.0.0":                              case "1.0.0.0":
126                                  {   // Current database is version 1.0.0.0, update to 1.0.0.1                                  {   // Current database is version 1.0.0.0, update to 1.0.0.1
127                                        Logging.ATSAdminLog.DebugFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.0", "1.0.0.1");
128                                      bContinue = RunScript(Resource1.UpdateDatabase1.ToString());                                      bContinue = RunScript(Resource1.UpdateDatabase1.ToString());
129                                        Logging.ATSAdminLog.DebugFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.0", "1.0.0.1");
130                                      goto case "1.0.0.1"; // Continue and upgrade one more step                                      goto case "1.0.0.1"; // Continue and upgrade one more step
131                                  }                                  }
132                              case "1.0.0.1":                              case "1.0.0.1":
133                                  {   // Current database is version 1.0.0.1, update to 1.0.0.2                                  {   // Current database is version 1.0.0.1, update to 1.0.0.2
134                                        Logging.ATSAdminLog.DebugFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.1", "1.0.0.2");
135                                      bContinue = RunScript(Resource1.UpdateDatabase2.ToString());                                      bContinue = RunScript(Resource1.UpdateDatabase2.ToString());
136                                        Logging.ATSAdminLog.DebugFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.2", "1.0.0.2");
137                                      goto case "1.0.0.2"; // Continue and upgrade one more step                                      goto case "1.0.0.2"; // Continue and upgrade one more step
138                                  }                                  }
139                              case "1.0.0.2":                              case "1.0.0.2":
140                                  {   // Current database is version 1.0.0.2, update to 1.0.0.3                                  {   // Current database is version 1.0.0.2, update to 1.0.0.3
141                                        Logging.ATSAdminLog.DebugFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.2", "1.0.0.3");
142                                      bContinue = RunScript(Resource1.UpdateDatabase3.ToString());                                      bContinue = RunScript(Resource1.UpdateDatabase3.ToString());
143                                        Logging.ATSAdminLog.DebugFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.2", "1.0.0.3");
144                                      break;                                      break;
145                                  }                                  }                            
   
                               
146                              default:                              default:
147                                  {                                  {
148                                      MessageBox.Show("Error: Not able to upgrade database (51188)");                                      //MessageBox.Show("Error: Not able to upgrade database (51188)");
149                                        if (databaseVersion == new Version(0, 0, 0, 0))
150                                        {
151                                            string format = string.Format("Database version is {0}, this should have been auto upgraded to {1}", databaseVersion.ToString(), ATSGlobals.strDatabaseVersion);
152                                            Logging.ATSAdminLog.Fatal(format);
153                                            MessageBox.Show(format);
154                                        }
155                                        else
156                                        {
157                                            string format = string.Format("Failed to upgrade Database from version: {0} to version: {1}", databaseVersion.ToString(), ATSGlobals.strDatabaseVersion);
158                                            Logging.ATSAdminLog.Fatal(format);
159                                            MessageBox.Show(format);
160                                        }                                    
161                                      break;                                      break;
162                                  }                                  }
163                          }                          }
# Line 192  namespace AnywhereTS Line 225  namespace AnywhereTS
225                  string strResult;                  string strResult;
226    
227                  //Verify that the AnywhereTS database exists                  //Verify that the AnywhereTS database exists
                 sqlCmd = new SqlCommand("select count(*) from master..sysdatabases where name='AnywhereTS'", sqlCon);  
                 strResult = sqlCmd.ExecuteScalar().ToString();  
228    
229                  if (strResult == "0")                  using (log4net.NDC.Push(string.Format("SQL STATMENT={0}", "select count(*) from master..sysdatabases where name='AnywhereTS'")))
230                  {                  {
231                        Logging.ATSAdminLog.Debug("Getting Coount of AnywhereTS databases");
232                      sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));                      if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
233                      sqlCon.Open();                      sqlCmd = new SqlCommand("select count(*) from master..sysdatabases where name='AnywhereTS'", sqlCon);
234                      RunScript(Resource1.CreateDatabase.ToString());                      strResult = sqlCmd.ExecuteScalar().ToString();
                     sqlCon.Close();  
                 }  
                 else  
                 {  
                     sqlCon.Close();  
                     sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));  
                     sqlCon.Open();  
                     RunScript("DROP DATABASE AnywhereTS");  
                     sqlCon.Close();  
                     sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));  
                     sqlCon.Open();  
                     RunScript(Resource1.CreateDatabase.ToString());  
                     sqlCon.Close();  
235                  }                  }
236                   Logging.ATSAdminLog.DebugFormat("AnywhereTS databases Count={0}", strResult);
237    
238                  try                  if (strResult == "0")
                 {  
                     sqlCon.Close();  
                     sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString);  
                     sqlCmd = new SqlCommand("SELECT value from AnywhereTS..AppInfo where property='version'", sqlCon);  
                     strResult = (string)sqlCmd.ExecuteScalar();  
                 }  
                 catch  
239                  {                  {
240                      // database exists, but does not have one or more expected tables  
241                      try  
242                        using (log4net.NDC.Push(string.Format("SQL Statment={0}", Resource1.CreateDatabase.ToString())))
243                      {                      {
244                          sqlCon.Close();                          Logging.ATSAdminLog.Debug("Creating Database AnywhereTS in CheckVersion()");
245                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));
246                          sqlCon.Open();                          if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
247                          RunScript("DROP DATABASE AnywhereTS");                          RunScript(Resource1.CreateDatabase.ToString());
248                          sqlCon.Close();                          sqlCon.Close();
249                        }
250                        Logging.ATSAdminLog.Debug("Created Database AnywhereTS in CheckVersion()");
251    
252                        using (log4net.NDC.Push(string.Format("SQL Statment={0}", Resource1.CreateTables.ToString())))
253                        {
254                            Logging.ATSAdminLog.Debug("Creating Tables in AnywhereTS Database in CheckVersion()");
255                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));
256                          sqlCmd.Connection = sqlCon;                          if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
257                          sqlCmd.CommandText = Resource1.CreateDatabase.ToString();                          RunScript(Resource1.CreateTables.ToString());
                         sqlCmd.ExecuteNonQuery();  
258                          sqlCon.Close();                          sqlCon.Close();
259                        }
260                        Logging.ATSAdminLog.Debug("Created Tables in AnywhereTS Database in CheckVersion()");
261                    }
262                    try
263                    {
264                        using (log4net.NDC.Push(string.Format("SQL Statment={0}", "SELECT value from AnywhereTS..AppInfo where property='version'")))
265                        {
266                            Logging.ATSAdminLog.Debug("Gettting AnywhereTS Database Version");
267                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString);                          sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString);
268                            if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
269                          sqlCmd = new SqlCommand("SELECT value from AnywhereTS..AppInfo where property='version'", sqlCon);                          sqlCmd = new SqlCommand("SELECT value from AnywhereTS..AppInfo where property='version'", sqlCon);
270                          strResult = (string)sqlCmd.ExecuteScalar();                          strResult = (string)sqlCmd.ExecuteScalar();
271                            sqlCon.Close();
272                        }
273                        Logging.ATSAdminLog.DebugFormat("AnywhereTS database version={0}", strResult);
274                    }
275                    catch(SqlException ex)
276                    {
277                        // the database exists, but one or more tables are missing
278                        using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", ex.Number.ToString(), ex.Message, System.Environment.NewLine, ex.ToString())))
279                        {
280                            Logging.ATSAdminLog.Error("Failed to get database version");
281                        }
282                        try
283                        {
284    
285                            using (log4net.NDC.Push(string.Format("SQL Statment={0}", Resource1.CreateTables.ToString())))
286                            {
287                                Logging.ATSAdminLog.Debug("Creating Tables in AnywhereTS Database in CheckVersion()");
288                                sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString.Replace("AnywhereTS", "master"));
289                                if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
290                                RunScript(Resource1.CreateTables.ToString());
291                                sqlCon.Close();
292                            }
293                            Logging.ATSAdminLog.Debug("Created Tables in AnywhereTS Database in CheckVersion()");
294    
295                            using (log4net.NDC.Push(string.Format("SQL Statment={0}", "SELECT value from AnywhereTS..AppInfo where property='version'")))
296                            {
297                                Logging.ATSAdminLog.Debug("Gettting AnywhereTS Database Version");
298                                sqlCon = new SqlConnection(Properties.Settings.Default.atsConnectionString);
299                                if (sqlCon.State != ConnectionState.Open) sqlCon.Open();
300                                sqlCmd = new SqlCommand("SELECT value from AnywhereTS..AppInfo where property='version'", sqlCon);
301                                strResult = (string)sqlCmd.ExecuteScalar();
302                                sqlCon.Close();
303                            }
304                            Logging.ATSAdminLog.DebugFormat("AnywhereTS database version={0}", strResult);
305                        }
306                        catch(SqlException ex1)
307                        {
308                            using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", ex1.Number.ToString(), ex1.Message, System.Environment.NewLine, ex1.ToString())))
309                            {
310                                Logging.ATSAdminLog.Error("Failed to get database version");
311                            }
312                            return (int)VersionCheck.Failed;
313                      }                      }
                     catch { return (int)VersionCheck.Failed; }  
314                  }                  }
315                  vDb = new Version(strResult);                  vDb = new Version(strResult);
316                        
# Line 262  namespace AnywhereTS Line 329  namespace AnywhereTS
329              catch (SqlException sql_ex)              catch (SqlException sql_ex)
330              {              {
331                  MessageBox.Show(sql_ex.Number.ToString() + " " + sql_ex.Message.ToString());                  MessageBox.Show(sql_ex.Number.ToString() + " " + sql_ex.Message.ToString());
332                    using (log4net.NDC.Push(string.Format("SqlException: ID={0} MESSAGE={1}{2}Diagnostics:{2}{3}", sql_ex.Number.ToString(), sql_ex.Message, System.Environment.NewLine, sql_ex.ToString())))
333                    {
334                        Logging.ATSAdminLog.Error("Failed to check database version");
335                    }
336                  return (int)VersionCheck.Failed;                  return (int)VersionCheck.Failed;
337              }              }
338              catch (Exception system_ex)              catch (Exception system_ex)
339              {              {
340                  MessageBox.Show(system_ex.Message.ToString());                  MessageBox.Show(system_ex.Message.ToString());
341                    using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", system_ex.Message, System.Environment.NewLine, system_ex.ToString())))
342                    {
343                        Logging.ATSAdminLog.Error("Failed to check database version");
344                    }
345                  return (int)VersionCheck.Failed;                  return (int)VersionCheck.Failed;
346              }              }
347          }          }

Legend:
Removed from v.21  
changed lines
  Added in v.45

  ViewVC Help
Powered by ViewVC 1.1.22