fix(ingest/sql_server): switch to engine inspector instead of connection (#13104)

This commit is contained in:
sleeperdeep 2025-06-27 21:15:33 +03:00 committed by GitHub
parent 54db272c4d
commit f3c8bf9cb4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -936,23 +936,23 @@ class SQLServerSource(SQLAlchemySource):
url = self.config.get_sql_alchemy_url() url = self.config.get_sql_alchemy_url()
logger.debug(f"sql_alchemy_url={url}") logger.debug(f"sql_alchemy_url={url}")
engine = create_engine(url, **self.config.options) engine = create_engine(url, **self.config.options)
with engine.connect() as conn:
if self.config.database and self.config.database != "": if self.config.database and self.config.database != "":
inspector = inspect(conn) inspector = inspect(engine)
yield inspector yield inspector
else: else:
with engine.begin() as conn:
databases = conn.execute( databases = conn.execute(
"SELECT name FROM master.sys.databases WHERE name NOT IN \ "SELECT name FROM master.sys.databases WHERE name NOT IN \
('master', 'model', 'msdb', 'tempdb', 'Resource', \ ('master', 'model', 'msdb', 'tempdb', 'Resource', \
'distribution' , 'reportserver', 'reportservertempdb'); " 'distribution' , 'reportserver', 'reportservertempdb'); "
) ).fetchall()
for db in databases: for db in databases:
if self.config.database_pattern.allowed(db["name"]): if self.config.database_pattern.allowed(db["name"]):
url = self.config.get_sql_alchemy_url(current_db=db["name"]) url = self.config.get_sql_alchemy_url(current_db=db["name"])
with create_engine( engine = create_engine(url, **self.config.options)
url, **self.config.options inspector = inspect(engine)
).connect() as conn:
inspector = inspect(conn)
self.current_database = db["name"] self.current_database = db["name"]
yield inspector yield inspector