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,25 +936,25 @@ 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:
if self.config.database_pattern.allowed(db["name"]): for db in databases:
url = self.config.get_sql_alchemy_url(current_db=db["name"]) if self.config.database_pattern.allowed(db["name"]):
with create_engine( url = self.config.get_sql_alchemy_url(current_db=db["name"])
url, **self.config.options engine = create_engine(url, **self.config.options)
).connect() as conn: inspector = inspect(engine)
inspector = inspect(conn) self.current_database = db["name"]
self.current_database = db["name"] yield inspector
yield inspector
def get_identifier( def get_identifier(
self, *, schema: str, entity: str, inspector: Inspector, **kwargs: Any self, *, schema: str, entity: str, inspector: Inspector, **kwargs: Any