private string GetSystemEngineProvider() { //string xtensiveProvider = this.connectionInfo.InternalInfo.Provider; //var mapping = ProtocolMappings[this.connectionInfo.StorageEngineKey]; StorageEngineAdoNetMapping mapping = GetProtocolMapping(this.connectionInfo.StorageEngine); var adoNetInvariantName = mapping.AdoNetKey; return(DBEngineUtils.GetSystemDBProviders().SingleOrDefault( dbEngineName => Util.StringEqual(dbEngineName, adoNetInvariantName, true))); }
private bool InternalRefresh(Server server, LoadingMode loadMode, bool clearErrors) { if (clearErrors) { ClearLastErrors(); } bool result = Util.StringEqual(this.connectionInfo.ServerName, server.Name, true); if (!result) { if (this.IsConnected) { this.Disconnect(); } this.connectionInfo.ServerName = server.Name; result = InternalReconnect(true, this.connectionInfo); } if (result) { EnsureConnected(); List <Database> databases = new List <Database>(); string systemEngineProvider = GetSystemEngineProvider(); var databaseList = DBEngineUtils.GetDatabases(systemEngineProvider, server.Name, this.connectionInfo.UserID, this.connectionInfo.Password); foreach (var database in databaseList.OrderBy(s => s)) { Database db = new Database(database, server); databases.Add(db); } server.Databases = new DatabaseCollection(databases); if (loadMode == LoadingMode.RecursiveAllLevels) { EnsureExtractedCatalog(); foreach (Database database in server.Databases) { InternalRefresh(database, loadMode, false); } } } return(result); }
public ServerCollection GetAllServers(LoadingMode loadingMode) { ClearLastErrors(); EnsureConnected(); ServerCollection servers = null; try { string systemEngineProvider = GetSystemEngineProvider(); var dataSources = DBEngineUtils.GetDataSources(systemEngineProvider); List <Server> items = new List <Server>(); foreach (var item in dataSources.OrderBy(info => info.Host)) { items.Add(new Server { Name = item.Host, IsClustered = item.IsClustered, Version = item.Version }); } items.Insert(0, new Server("localhost")); servers = new ServerCollection(items); if (loadingMode == LoadingMode.RecursiveAllLevels) { foreach (Server server in servers) { InternalRefresh(server, loadingMode, false); } } } catch (Exception e) { UpdateLastError(e); } return(servers); }