/// <summary>
        /// Get databases for server
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Shown(object sender, EventArgs e)
        {
            var ops = new SqlDatabases();

            DatabaseNameListBox.DataSource = ops.DatabaseNames();

            var dOperations = new SqlTables("master");

            if (!dOperations.NorthWindDemoExists())
            {
                return;
            }

            DatabaseNameListBox.SelectedIndex       = DatabaseNameListBox.FindString("NorthWindDemo");
            DatabaseTableNamesListBox.SelectedIndex = DatabaseTableNamesListBox.FindString("Customer");

            var databaseTables = new SqlTables("NorthWindDemo");

            _countryColumnList = databaseTables.CountrySelected;

            foreach (var item in _countryColumnList)
            {
                SelectedTableColumnCheckedListBox.FindItemAndSetChecked(item);
            }
        }
        /// <summary>
        /// Get columns to perform duplicate check
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        /// <remarks>
        /// As coded columns should not be binary or similar type
        /// such as image, if so this will fail. Check types if unsure
        ///
        /// SELECT COLUMN_NAME, DATA_TYPE
        ///     FROM INFORMATION_SCHEMA.COLUMNS
        ///     WHERE TABLE_NAME = 'SomeTable'
        ///
        /// </remarks>
        private void cmdCheckForDuplicates_Click(object sender, EventArgs e)
        {
            if (SelectedTableColumnCheckedListBox.Items.Count == 0)
            {
                return;
            }

            var columns = SelectedTableColumnCheckedListBox.Items.OfType <SqlColumn>();
            // ReSharper disable once PossibleMultipleEnumeration
            var identityColumn = columns.FirstOrDefault(sqlColumn => sqlColumn.IsIdentity);

            var sqlColumns = SelectedTableColumnCheckedListBox.CheckedIColumnDetailsList();

            if (sqlColumns.Count > 0)
            {
                if (identityColumn != null)
                {
                    var evaluateContains = sqlColumns.Contains(identityColumn);
                    if (evaluateContains)
                    {
                        sqlColumns.Remove(identityColumn);
                    }
                }
            }

            var container = new DuplicateItemContainer()
            {
                Columns = sqlColumns,
                OrderBy = OrderByComboBox.SelectedIndex == 0 ? "" : OrderByComboBox.Text
            };

            var manager = new DuplicateManager(container);

            // ReSharper disable once PossibleMultipleEnumeration
            var ops = new DataOperations(columns.First().Schema);
            var duplicatesDataTable = ops.Duplicates(manager.Statement);

            if (!ops.IsSuccessFul)
            {
                if (ops.HasException && !string.IsNullOrWhiteSpace(ops.LastExceptionMessage))
                {
                    MessageBox.Show($"Failure\n{ops.LastExceptionMessage}");
                }

                return;
            }

            if (duplicatesDataTable.Rows.Count == 0)
            {
                MessageBox.Show("There are no duplicates in the selected table");
                return;
            }

            if (identityColumn != null)
            {
                var f = new ResultsForm(
                    DatabaseTableNamesListBox.Text,
                    duplicatesDataTable,
                    identityColumn.ColumnName);

                try
                {
                    f.ShowDialog();
                }
                finally
                {
                    f.Dispose();
                }
            }
            else
            {
                MessageBox.Show("No identity column, can not continue");
            }
        }