diff --git a/metadata-ingestion/src/datahub/ingestion/source/sql/mssql/source.py b/metadata-ingestion/src/datahub/ingestion/source/sql/mssql/source.py index 657c53dcdc0..a14b9719918 100644 --- a/metadata-ingestion/src/datahub/ingestion/source/sql/mssql/source.py +++ b/metadata-ingestion/src/datahub/ingestion/source/sql/mssql/source.py @@ -936,25 +936,25 @@ class SQLServerSource(SQLAlchemySource): url = self.config.get_sql_alchemy_url() logger.debug(f"sql_alchemy_url={url}") engine = create_engine(url, **self.config.options) - with engine.connect() as conn: - if self.config.database and self.config.database != "": - inspector = inspect(conn) - yield inspector - else: + + if self.config.database and self.config.database != "": + inspector = inspect(engine) + yield inspector + else: + with engine.begin() as conn: databases = conn.execute( "SELECT name FROM master.sys.databases WHERE name NOT IN \ ('master', 'model', 'msdb', 'tempdb', 'Resource', \ 'distribution' , 'reportserver', 'reportservertempdb'); " - ) - for db in databases: - if self.config.database_pattern.allowed(db["name"]): - url = self.config.get_sql_alchemy_url(current_db=db["name"]) - with create_engine( - url, **self.config.options - ).connect() as conn: - inspector = inspect(conn) - self.current_database = db["name"] - yield inspector + ).fetchall() + + for db in databases: + if self.config.database_pattern.allowed(db["name"]): + url = self.config.get_sql_alchemy_url(current_db=db["name"]) + engine = create_engine(url, **self.config.options) + inspector = inspect(engine) + self.current_database = db["name"] + yield inspector def get_identifier( self, *, schema: str, entity: str, inspector: Inspector, **kwargs: Any