public override bool Equals(ITableSourceInfo other)
        {
            TableSourceInfo tsi = other as TableSourceInfo;

            return(ReferenceEquals(this, other) ||
                   (tsi != null && Database.Equals(tsi.Database) && Schema.EqualsIgnoreCase(tsi.Schema) && Name.EqualsIgnoreCase(tsi.Name)));
        }
        public virtual ITableSourceInfo CreateTableSourceInfo(string qualifiedName)
        {
            string linkedServer;
            string catalog;
            string schema;
            string table;
            bool   isDatabaseReachable;

            if (ParseQualifiedTableName(qualifiedName, out linkedServer, out catalog, out schema, out table, out isDatabaseReachable))
            {
                var tableSourceInfo = new TableSourceInfo(databaseServices, new DatabaseInfo(databaseServices, catalog, linkedServer), table, schema, qualifiedName);
                if (!isDatabaseReachable)
                {
                    tableSourceInfo.ValidationWarning = "It was not possible to connect to the database to validate the qualified table name '{0}'. Runtime errors may occur.".F(qualifiedName);
                }
                return(tableSourceInfo);
            }
            throw new InvalidDatabaseObjectIdentifierException("'" + qualifiedName + "' is not a valid qualified table name.");
        }