Example #1
0
        public List <ConnectionTestResult> TestDatabaseConnections(Dictionary <string, List <string> > serverDbSets, string userName, string password, AuthenticationType authType)
        {
            List <ConnectionTestResult> results = new List <ConnectionTestResult>();

            foreach (KeyValuePair <string, List <string> > server in serverDbSets)
            {
                foreach (string db in server.Value)
                {
                    lock (ThreadedConnectionTester.SyncObj)
                    {
                        ThreadedConnectionTester.SyncObj.WorkingRunners++;
                    }

                    ConnectionTestResult obj = new ConnectionTestResult()
                    {
                        DatabaseName = db, ServerName = server.Key, DbUserName = userName, DbPassword = password, AuthenticationType = authType
                    };
                    results.Add(obj);
                    string msg = "Queuing up thread for " + obj.ServerName + "." + obj.DatabaseName;
                    log.LogDebug(msg);
                    System.Threading.ThreadPool.QueueUserWorkItem(TestSingleConnection, obj);
                }
            }

            while (ThreadedConnectionTester.SyncObj.WorkingRunners > 0)
            {
                System.Threading.Thread.Sleep(100);
            }

            return(results);
        }
Example #2
0
        private void TestSingleConnection(object data)
        {
            ConnectionTestResult result = (ConnectionTestResult)data;

            result.Successful = ConnectionHelper.TestDatabaseConnection(result.DatabaseName, result.ServerName, result.DbUserName, result.DbPassword, result.AuthenticationType, 2);
            lock (ThreadedConnectionTester.SyncObj)
            {
                ThreadedConnectionTester.SyncObj.WorkingRunners--;
            }
            log.LogDebug("Thread Complete for " + result.ServerName + "." + result.DatabaseName + " :: Successful=" + result.Successful.ToString());
        }