public override void PopulateDatabases(IDatasource datasource) { DatabaseObjectsCollection <IDatabase> databases = new DatabaseObjectsCollection <IDatabase>(datasource); SqlConnection sqlConnection = null; sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = datasource.ConnectionString; try { sqlConnection.Open(); } catch (SqlException ex) { switch (ex.Number) { case 2: case 3: case 53: Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { Datasources.Remove(datasource as SQLServerDatasource); })); break; default: break; } throw ex; } Version version = new Version(sqlConnection.ServerVersion); string manifestToken; if (!IsVersionSupported(version, out manifestToken)) { throw new NotSupportedException(string.Format("Version '{0}' is not supported!", version == null ? "unknown" : version.ToString())); } string sql = string.Empty; if (version.Major >= 9) { sql = "use master; select name from sys.databases order by name"; } else { sql = "use master; select name from sysdatabases order by name"; } SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection); sqlCommand.CommandTimeout = 20; SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while (sqlDataReader.Read()) { databases.Add(new Database(datasource) { Name = sqlDataReader["name"].ToString() }); } sqlDataReader.Close(); datasource.Databases = databases; if (sqlConnection != null && sqlConnection.State == ConnectionState.Open) { sqlConnection.Close(); } }
public override void PopulateDatabases(IDatasource datasource) { DatabaseObjectsCollection <IDatabase> databases = new DatabaseObjectsCollection <IDatabase>(datasource); SqlConnection sqlConnection = null; sqlConnection = new SqlConnection(); sqlConnection.ConnectionString = datasource.ConnectionString; try { sqlConnection.Open(); } catch (SqlException ex) { switch (ex.Number) { case 2: case 3: case 53: Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(() => { Datasources.Remove(datasource as SQLServerDatasource); })); break; default: break; } throw ex; } string sqlversion = sqlConnection.ServerVersion; sqlversion = sqlversion.Split('.').FirstOrDefault(); //major version int intsqlversion = Convert.ToInt32(sqlversion); string sql = string.Empty; if (intsqlversion == 8) { datasource.ProviderManifestToken = "2000"; } else if (intsqlversion == 9) { datasource.ProviderManifestToken = "2005"; } else if (intsqlversion == 10) { datasource.ProviderManifestToken = "2008"; } if (intsqlversion >= 9) { sql = "use master; select name from sys.databases order by name"; } else { sql = "use master; select name from sysdatabases order by name"; } SqlCommand sqlCommand = new SqlCommand(sql, sqlConnection); sqlCommand.CommandTimeout = 20; SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); while (sqlDataReader.Read()) { databases.Add(new Database(datasource) { Name = sqlDataReader["name"].ToString() }); } sqlDataReader.Close(); datasource.Databases = databases; if (sqlConnection != null && sqlConnection.State == ConnectionState.Open) { sqlConnection.Close(); } }