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

Contents of /trunk/TSAdminTool/Database.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 135 - (show annotations) (download)
Sun Jul 15 05:58:56 2012 UTC (7 years, 11 months ago) by william
File size: 34633 byte(s)
+ tables are created for an empty database

1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Data;
5 using System.Data.SqlClient;
6 using System.Windows.Forms;
7 using System.Text.RegularExpressions;
8 using System.Management;
9 using log4net;
10 using System.Security.Principal;
11 using AnywhereTS.DBSupport;
12
13 namespace AnywhereTS
14 {
15 class DatabaseSupport
16 {
17
18 enum VersionCheck
19 {
20 Failed = 0,
21 Equal,
22 DatabaseIsMoreNew,
23 DatabaseIsOlder,
24 //DatabaseNotFound,
25 DatabaseCreated,
26 };
27
28 //private SqlConnection sqlCon = new SqlConnection();
29 //private SqlCommand sqlCmd = new SqlCommand();
30
31 const string SQL_BROWSER_SERVICE_NAME = "SQLBrowser";
32 public static string InstanceName { get { return AnywhereTS.DBSupport.Properties.Settings.Default.DBInstance; } }
33 public bool SetupDatabase()
34 {
35 Exception ErrorInfo = null;
36 try
37 {
38 bool bContinue = false;
39 // Create a connection to SQL Server
40 Logging.DatabaseLog.Debug("SetupDatabase() called ");
41 #region comment-code
42 #region Database Creation support
43 using (MsSqlConnector conn = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, ATSGlobals.strDatabaseName))
44 {
45 try
46 {
47
48 conn.CreateConnection(out ErrorInfo);
49 conn.OpenConnection(out ErrorInfo);
50 }
51 catch (Exception ex)
52 {
53 Exception e = ex;
54 try
55 {
56 conn.CloseConnection(out ErrorInfo);
57 using (MsSqlConnector conn1 = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, "master"))
58 {
59 try
60 {
61 conn1.CreateConnection(out ErrorInfo);
62 conn1.OpenConnection(out ErrorInfo);
63
64 // create datagbase
65 using (log4net.NDC.Push("SetupDatabase().CreateDatabase"))
66 {
67 Logging.DatabaseLog.Info(string.Format("Creating Database {0}", ATSGlobals.strDatabaseName));
68 RunScript(SQLServerResources.CreateDatabase, conn1, out ErrorInfo);
69 Logging.DatabaseLog.Info(string.Format("Created Database {0}", ATSGlobals.strDatabaseName));
70 }
71 using (log4net.NDC.Push("SetupDatabase().CreateTables"))
72 {
73 // create tables
74 Logging.DatabaseLog.Info(string.Format("Creating Tables in {0} Database", ATSGlobals.strDatabaseName));
75 RunScript(SQLServerResources.CreateTables, conn1, out ErrorInfo);
76 Logging.DatabaseLog.Info(string.Format("Created Tables in {0} Database", ATSGlobals.strDatabaseName));
77 }
78 }
79 catch (Exception ex1)
80 {
81 e = ex1.GetBaseException();
82 if (ErrorInfo == null) { ErrorInfo = e;}
83 throw ErrorInfo;
84 }
85 }
86 }
87 catch (Exception ex1)
88 {
89 e = ex1.GetBaseException();
90 if (ErrorInfo == null) { ErrorInfo = e; }
91 throw ErrorInfo;
92 }
93 e = ex.GetBaseException();
94 if (!e.Message.ToLower().Contains(string.Format("Cannot open database \"{0}\" requested by the login",ATSGlobals.strDatabaseName).ToLower()))
95 {
96 if (ErrorInfo == null) { ErrorInfo = e; }
97 throw ErrorInfo;
98 }
99 }
100 }
101 #endregion
102
103 #region Database version check
104 // Now that you are connected to Express, check the database versions
105 Version databaseVersion; // The current version of the database
106 int chkVer = CheckVersion(out databaseVersion);
107 VersionCheck verChk = (VersionCheck)chkVer;
108 //MessageBox.Show(string.Format("Version Check: {0} Version: {1}", verChk.ToString(), databaseVersion.ToString()));
109 Logging.DatabaseLog.InfoFormat("Database Version Check: {0} .... Database Version: {1}", verChk.ToString(), databaseVersion.ToString());
110 switch (chkVer)
111 {
112 case (int)VersionCheck.Equal:
113 {
114 bContinue = true;
115 break;
116 }
117 case (int)VersionCheck.Failed:
118 {
119 bContinue = false;
120 break;
121 }
122 case (int)VersionCheck.DatabaseIsOlder:
123 {
124 using (MsSqlConnector conn = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, "master"))
125 {
126 try
127 {
128 conn.CreateConnection(out ErrorInfo);
129 conn.OpenConnection(out ErrorInfo);
130 #region database upggrade scripts
131 switch (databaseVersion.ToString())
132 {
133 // Run the apropriate upgdrade script(s)
134 case "1.0.0.0":
135 { // Current database is version 1.0.0.0, update to 1.0.0.1
136 Logging.DatabaseLog.InfoFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.0", "1.0.0.1");
137 bContinue = RunScript(SQLServerResources.UpdateDatabase1, conn, out ErrorInfo);
138 Logging.DatabaseLog.InfoFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.0", "1.0.0.1");
139 goto case "1.0.0.1"; // Continue and upgrade one more step
140 }
141 case "1.0.0.1":
142 { // Current database is version 1.0.0.1, update to 1.0.0.2
143 Logging.DatabaseLog.InfoFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.1", "1.0.0.2");
144 bContinue = RunScript(SQLServerResources.UpdateDatabase2, conn, out ErrorInfo);
145 Logging.DatabaseLog.InfoFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.2", "1.0.0.2");
146 goto case "1.0.0.2"; // Continue and upgrade one more step
147 }
148 case "1.0.0.2":
149 { // Current database is version 1.0.0.2, update to 1.0.0.3
150 Logging.DatabaseLog.InfoFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.2", "1.0.0.3");
151 bContinue = RunScript(SQLServerResources.UpdateDatabase3, conn, out ErrorInfo);
152 Logging.DatabaseLog.InfoFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.2", "1.0.0.3");
153 goto case "1.0.0.3"; // Continue and upgrade one more step
154 }
155 case "1.0.0.3":
156 { // Current database is version 1.0.0.3, update to 1.0.0.4
157 Logging.DatabaseLog.InfoFormat("Upgrading Database from version: {0} to version: {1}", "1.0.0.3", "1.0.0.4");
158 bContinue = RunScript(SQLServerResources.UpdateDatabase4, conn, out ErrorInfo);
159 Logging.DatabaseLog.InfoFormat("Upgraded Database from version: {0} to version: {1}", "1.0.0.3", "1.0.0.4");
160 break;
161 }
162 default:
163 {
164 //MessageBox.Show("Error: Not able to upgrade database (51188)");
165 if (databaseVersion == new Version(0, 0, 0, 0))
166 {
167 string format = string.Format("Database version is {0}, this should have been auto upgraded to {1}", databaseVersion.ToString(), ATSGlobals.strDatabaseVersion);
168 Logging.DatabaseLog.Fatal(format);
169 MessageBox.Show(format);
170 }
171 else
172 {
173 string format = string.Format("Failed to upgrade Database from version: {0} to version: {1}", databaseVersion.ToString(), ATSGlobals.strDatabaseVersion);
174 Logging.DatabaseLog.Fatal(format);
175 MessageBox.Show(format);
176 }
177 break;
178 }
179 }
180 #endregion
181 }
182 catch (Exception ex)
183 {
184 if (ErrorInfo == null) { ErrorInfo = ex; }
185 throw ErrorInfo;
186 }
187 }
188 break;
189 }
190 case (int)VersionCheck.DatabaseIsMoreNew:
191 {
192 bContinue = false;
193 break;
194 }
195 default:
196 {
197 bContinue = false;
198 break;
199 }
200
201 }
202 #endregion
203 #endregion
204 return bContinue;
205 }
206
207 catch (Exception ex)
208 {
209 if (ErrorInfo == null)
210 {
211 ErrorInfo = ex.GetBaseException();
212 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))
213 {
214 Logging.DatabaseLog.Error(string.Format("SetupDatabase() failed"));
215 }
216 throw ErrorInfo;
217 }
218 else
219 {
220 ErrorInfo = ErrorInfo.GetBaseException();
221 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ErrorInfo.GetType().Name, ErrorInfo.Message, System.Environment.NewLine, ErrorInfo.ToString())))
222 {
223 Logging.DatabaseLog.Error(string.Format("SetupDatabase() failed"));
224 }
225 throw ErrorInfo;
226 }
227 }
228 }
229
230
231 public bool RunScript(string strFile, MsSqlConnector con, out Exception ErrorInfo)
232 {
233 ErrorInfo = null;
234 string cmd = strFile;
235 //cmd = cmd.Replace("[DataDir]", ProSupport.strDatabasePath);
236 con.RunScript(cmd, out ErrorInfo);
237 return false;
238 }
239 // Check the version of the datbase
240 public int CheckVersion(out Version vDb)
241 {
242 Exception ErrorInfo = null;
243 //Get Version information from application
244 Version v = new Version(ATSGlobals.strDatabaseVersion);
245 vDb = new Version("0.0.0.0"); // Assign a default value for version
246 try
247 {
248
249 //string strResult;
250
251 int db_count = -1;
252 //Verify that the AnywhereTS database exists
253 #region Get Database Count
254 using (MsSqlConnector conn = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, "master"))
255 {
256 try
257 {
258 conn.CreateConnection(out ErrorInfo);
259 conn.OpenConnection(out ErrorInfo);
260 SqlConnection sqlCon;
261 conn.GetConnectionClone(out sqlCon, out ErrorInfo);
262 SqlCommand sqlCmd = new SqlCommand();
263 sqlCmd.CommandText = string.Format("select count(*) from master..sysdatabases where name='{0}'", ATSGlobals.strDatabaseName);
264 sqlCmd.CommandType = CommandType.Text;
265 sqlCmd.Connection = sqlCon;
266 try
267 {
268 db_count = Convert.ToInt32(sqlCmd.ExecuteScalar());
269 }
270 catch (Exception ex)
271 {
272 Exception e = ex.GetBaseException();
273 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", e.GetType().Name, e.Message, System.Environment.NewLine, e.ToString())))
274 {
275 Logging.DatabaseLog.Error(string.Format("sqlCmd.ExecuteScalar() failed"));
276 }
277 }
278
279 Logging.DatabaseLog.Info(string.Format("Found {0} databases named {1}", db_count, ATSGlobals.strDatabaseName));
280 }
281 catch (Exception ex)
282 {
283 if (ErrorInfo == null)
284 {
285 ErrorInfo = ex;
286 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))
287 {
288 Logging.DatabaseLog.Error(string.Format("Failed to get count of databases named: {0}{1}", System.Environment.NewLine, ATSGlobals.strDatabaseName));
289 }
290 throw ErrorInfo;
291 }
292 else
293 {
294 ErrorInfo = ex.GetBaseException();
295 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ErrorInfo.GetType().Name, ErrorInfo.Message, System.Environment.NewLine, ErrorInfo.ToString())))
296 {
297 Logging.DatabaseLog.Error(string.Format("Failed to get count of databases named: {0}{1}", System.Environment.NewLine, ATSGlobals.strDatabaseName));
298 }
299 throw ErrorInfo;
300 }
301
302 }
303 }
304 #endregion
305 if (db_count == -1)
306 {
307 return (int)VersionCheck.Failed;
308 }
309 else if (db_count == 0)
310 {
311 #region Database Creation support
312 using (MsSqlConnector conn = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, ATSGlobals.strDatabaseName))
313 {
314 try
315 {
316 conn.CreateConnection(out ErrorInfo);
317 conn.OpenConnection(out ErrorInfo);
318 }
319 catch (Exception ex)
320 {
321 try
322 {
323 conn.CloseConnection(out ErrorInfo);
324 using (MsSqlConnector conn1 = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, "master"))
325 {
326 try
327 {
328 conn1.CreateConnection(out ErrorInfo);
329 conn1.OpenConnection(out ErrorInfo);
330 // create datagbase
331 using (log4net.NDC.Push("CheckVersion().CreateDatabase"))
332 {
333 Logging.DatabaseLog.Info(string.Format("Creating Database {0}", ATSGlobals.strDatabaseName));
334 RunScript(SQLServerResources.CreateDatabase, conn1, out ErrorInfo);
335 Logging.DatabaseLog.Info(string.Format("Created Database {0}", ATSGlobals.strDatabaseName));
336 }
337 using (log4net.NDC.Push("CheckVersion().CreateTables"))
338 {
339 // create tables
340 Logging.DatabaseLog.Info(string.Format("Creating Tables in {0} Database", ATSGlobals.strDatabaseName));
341 RunScript(SQLServerResources.CreateTables, conn1, out ErrorInfo);
342 Logging.DatabaseLog.Info(string.Format("Created Tables in {0} Database", ATSGlobals.strDatabaseName));
343 }
344 }
345 catch (Exception ex1)
346 {
347 if (ErrorInfo == null) { ErrorInfo = new Exception(ex1.Message, ex); }
348 throw ErrorInfo;
349 }
350 throw ErrorInfo;
351 }
352 }
353 catch (Exception ex1)
354 {
355 if (ErrorInfo == null) { ErrorInfo = new Exception(ex1.Message, ex); }
356 throw ErrorInfo;
357 }
358 }
359 }
360 if (ErrorInfo != null) { return (int)VersionCheck.Failed; }
361 #endregion
362 }
363
364
365 #region Get Database Version
366 using (MsSqlConnector conn = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, "master"))
367 {
368 try
369 {
370 conn.CreateConnection(out ErrorInfo);
371 conn.OpenConnection(out ErrorInfo);
372 SqlConnection sqlCon;
373 conn.GetConnectionClone(out sqlCon, out ErrorInfo);
374 SqlCommand sqlCmd = new SqlCommand();
375 sqlCmd.CommandText = string.Format("SELECT value from {0}..AppInfo where property='version'", ATSGlobals.strDatabaseName);
376 sqlCmd.CommandType = CommandType.Text;
377 sqlCmd.Connection = sqlCon;
378 string version = (string)sqlCmd.ExecuteScalar();
379 vDb = new Version(version);
380 Logging.DatabaseLog.Info(string.Format("Database {0} is at Version: {1}", ATSGlobals.strDatabaseName, version));
381 }
382 catch (Exception ex)
383 {
384 if (!ex.Message.ToLower().Contains(string.Format("invalid object name '{0}..AppInfo'", ATSGlobals.strDatabaseName).ToLower()))
385 {
386 if (ErrorInfo == null)
387 {
388 ErrorInfo = ex;
389 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ErrorInfo.GetType().Name, ErrorInfo.Message, System.Environment.NewLine, ErrorInfo.ToString())))
390 {
391 Logging.DatabaseLog.Error(string.Format("Failed to get count of databases named: {0}{1}", System.Environment.NewLine, ATSGlobals.strDatabaseName));
392 }
393 throw ErrorInfo;
394 }
395 else
396 {
397 ErrorInfo = ex.GetBaseException();
398 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ErrorInfo.GetType().Name, ErrorInfo.Message, System.Environment.NewLine, ErrorInfo.ToString())))
399 {
400 Logging.DatabaseLog.Error(string.Format("Failed to get count of databases named: {0}{1}", System.Environment.NewLine, ATSGlobals.strDatabaseName));
401 }
402 throw ErrorInfo;
403 }
404 }
405 try
406 {
407 conn.CloseConnection(out ErrorInfo);
408 ErrorInfo = null; // reset ErrorInfo
409 using (MsSqlConnector conn1 = new MsSqlConnector(ProSupport.strDatabaseServer, ProSupport.strDatabaseInstance, "master"))
410 {
411 try
412 {
413 conn1.CreateConnection(out ErrorInfo);
414 conn1.OpenConnection(out ErrorInfo);
415 using (log4net.NDC.Push("CheckVersion().CreateTables"))
416 {
417 // create tables
418 Logging.DatabaseLog.Info(string.Format("Creating Tables in {0} Database", ATSGlobals.strDatabaseName));
419 RunScript(SQLServerResources.CreateTables, conn1, out ErrorInfo);
420 Logging.DatabaseLog.Info(string.Format("Created Tables in {0} Database", ATSGlobals.strDatabaseName));
421 }
422 }
423 catch (Exception ex1)
424 {
425 if (ErrorInfo == null) { ErrorInfo = new Exception(ex1.Message, ex); }
426 throw ErrorInfo;
427 }
428 }
429 }
430 catch (Exception ex1)
431 {
432 if (ErrorInfo == null)
433 {
434 ErrorInfo = ex1;
435 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ex.GetType().Name, ex.Message, System.Environment.NewLine, ex.ToString())))
436 {
437 Logging.DatabaseLog.Error(string.Format("Failed to get count of databases named: {0}{1}", System.Environment.NewLine, ATSGlobals.strDatabaseName));
438 }
439 throw ErrorInfo;
440 }
441 else
442 {
443 ErrorInfo = ex1.GetBaseException();
444 using (log4net.NDC.Push(string.Format("{0}: MESSAGE={1}{2}Diagnostics:{2}{3}", ErrorInfo.GetType().Name, ErrorInfo.Message, System.Environment.NewLine, ErrorInfo.ToString())))
445 {
446 Logging.DatabaseLog.Error(string.Format("Failed to get count of databases named: {0}{1}", System.Environment.NewLine, ATSGlobals.strDatabaseName));
447 }
448 throw ErrorInfo;
449 }
450 }
451 if (ErrorInfo == null)
452 ErrorInfo = ex;
453 throw ErrorInfo;
454 }
455 }
456 #endregion
457
458 if (vDb == v)
459 return (int)VersionCheck.Equal;
460
461 if (vDb > v)
462 return (int)VersionCheck.DatabaseIsMoreNew;
463
464 else
465 return (int)VersionCheck.DatabaseIsOlder;
466
467 }
468 catch (SqlException sql_ex)
469 {
470 MessageBox.Show(sql_ex.Number.ToString() + " " + sql_ex.Message.ToString());
471 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())))
472 {
473 Logging.DatabaseLog.Error("Failed to check database version");
474 }
475 return (int)VersionCheck.Failed;
476 }
477 catch (Exception system_ex)
478 {
479 MessageBox.Show(system_ex.Message.ToString());
480 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", system_ex.Message, System.Environment.NewLine, system_ex.ToString())))
481 {
482 Logging.DatabaseLog.Error("Failed to check database version");
483 }
484 return (int)VersionCheck.Failed;
485 }
486 }
487
488
489
490
491 //[Obsolete("SetDatabaseRights() has been deperecated - user rights are assigned via SQL Server", true)]
492 //public static void SetDatabaseRights()
493 //{
494 // try
495 // {
496 // // Add an access control entry to the database file.
497 // //ProSupport.GrantRWaccessForRemoteDesktopUsers(ProSupport.strDatabasePath + @"\" + ProSupport.strDatabaseFilename);
498 // //ProSupport.GrantRWaccessForRemoteDesktopUsers(ProSupport.strDatabasePath + @"\" + ProSupport.strDatabaseFilename2);
499 // }
500 // catch (Exception e)
501 // {
502 // MessageBox.Show("Cannot set access rights for users to the database. Do you have the sufficient rights? Application will abort. Error: " + e.Message);
503 // using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
504 // {
505 // Logging.DatabaseLog.Fatal("Cannot set access rights for users to the database.");
506 // }
507 // Application.Exit();
508 // return;
509 // }
510 //}
511
512 public static void StartSQLbrowserService()
513 {
514 System.ServiceProcess.ServiceController srvController = new System.ServiceProcess.ServiceController(SQL_BROWSER_SERVICE_NAME);
515 try
516 {
517 // Check that the SQL browser service is not already running
518 if (srvController.Status != System.ServiceProcess.ServiceControllerStatus.Running)
519 { // Service not running, start it.
520 srvController.Start();
521 srvController.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running, TimeSpan.FromSeconds(50));
522 }
523 }
524
525 catch (Exception e)
526 {
527 MessageBox.Show("Could not start the SQL Browser service (13078). Error:" + e.Message);
528 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
529 {
530 Logging.DatabaseLog.Error("Could not start the SQL Browser service (13078).");
531 }
532 }
533 }
534
535 // Configure the SQL browser service to autostart
536 public static void AutostartSQLbrowserService()
537 {
538 try
539 {
540 //construct the management path
541 string path = "Win32_Service.Name='" + SQL_BROWSER_SERVICE_NAME + "'";
542 using (ManagementObject service = new ManagementObject(new ManagementPath(path)))
543 {
544 object[] parameters = new object[1];
545 parameters[0] = "Automatic";
546 service.InvokeMethod("ChangeStartMode", parameters);
547
548 }
549 }
550 catch (Exception e)
551 {
552 MessageBox.Show("Error, could not configure SQL Browser service (24888). Please check that SQL Server is intalled and that you are logged in with sufficient rights to configure services. Then retry the operation.");
553 using (log4net.NDC.Push(string.Format("SqlException: MESSAGE={0}{1}Diagnostics:{1}{2}", e.Message, System.Environment.NewLine, e.ToString())))
554 {
555 Logging.DatabaseLog.Fatal("Could not configure SQL Browser service (24888). Please check that SQL Server is intalled and that you are logged in with sufficient rights to configure services. Then retry the operation.");
556 }
557 }
558 }
559
560 // Enable named pipes on the SQL Express server
561 public static bool EnableNamedPipes()
562 {
563 ManagementScope manScope = new ManagementScope(@"\\.\root\Microsoft\SqlServer\ComputerManagement");
564 ManagementClass sqlServicesMan = new ManagementClass(manScope, new ManagementPath("SqlService"), null);
565 ManagementClass serverProtocolsMan = new ManagementClass(manScope, new ManagementPath("ServerNetworkProtocol"), null);
566 bool restarted = false; // Indicating if restart of SQL server was performed
567
568 sqlServicesMan.Get();
569 serverProtocolsMan.Get();
570
571 foreach (ManagementObject prot in serverProtocolsMan.GetInstances())
572 {
573 prot.Get();
574 if ((string)prot.GetPropertyValue("ProtocolName") == "Np" && //Named pipes
575 (string)prot.GetPropertyValue("InstanceName") == InstanceName)
576 { // We found the named pipes protocol
577 if (!(bool)prot.GetPropertyValue("Enabled"))
578 { // Named pipes not activated
579 prot.InvokeMethod("SetEnable", null); // Activate named pipes
580
581 // Check if user wants to restart SQL server
582 DialogResult resultRights;
583 resultRights = MessageBox.Show(string.Format("In order for users to use the AnywhereTS control panel, the {0} service on this computer need to be restarted. This operation might take up to 60 seconds. Do you want restart the {0} service now?", InstanceName), string.Format("AnywhereTS - Restart {0} (This operation might take up to 60 seconds!)", InstanceName), MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
584 if (resultRights == DialogResult.Yes)
585 {
586 // Restart the SQL server
587 const uint sqlServerService = 1;
588 const uint sqlServiceStopped = 1;
589 foreach (ManagementObject svc in sqlServicesMan.GetInstances())
590 {
591 if ((uint)svc.GetPropertyValue("SqlServiceType") == sqlServerService &&
592 (string)svc.GetPropertyValue("ServiceName") == string.Format("MSSQL${0}", InstanceName))
593 {
594 svc.Get();
595 if ((uint)svc.GetPropertyValue("State") != sqlServiceStopped)
596 {
597 svc.InvokeMethod("StopService", null);
598 }
599 svc.InvokeMethod("StartService", null);
600 restarted = true;
601 } // end if
602 }
603 }
604 } // end if 'named pipes protool'
605 }
606 } // foreach
607
608 return restarted;
609 }
610 }
611 }

  ViewVC Help
Powered by ViewVC 1.1.22